/*
 * Copyright (c) 2019-2020 Waqar Ahmed -- <waqar.17a@gmail.com>
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 *
 */

#include <QMultiHash>
#include <QLatin1String>
#include "languagedata.h"
/* ------------------------
 * TEMPLATE FOR LANG DATA
 * -------------------------
 *
 * loadXXXData, where XXX is the language
 * keywords are the language keywords e.g, const
 * types are built-in types i.e, int, char, var
 * literals are words like, true false
 * builtin are the library functions
 * other can contain any other thing, for e.g, in cpp it contains the
 preprocessor

    xxx_keywords = {
    };

    xxx_types = {
    };

    xxx_literals = {
    };

    xxx_builtin = {
    };

    xxx_other = {
    };

*/

namespace QSourceHighlite
{

/**********************************************************/
/* LuaData ************************************************/
/**********************************************************/

static bool luaDataInitialized = false;
static LanguageData lua_keywords;
static LanguageData lua_types;
static LanguageData lua_builtin;
static LanguageData lua_literals;
static LanguageData lua_other;
void initLuaData()
{
  lua_keywords = LanguageData{
      {('a'), QLatin1String("and")},     {('b'), QLatin1String("break")},
      {('d'), QLatin1String("do")},      {('e'), QLatin1String("else")},
      {('e'), QLatin1String("elseif")},  {('e'), QLatin1String("end")},
      {('f'), QLatin1String("for")},     {('f'), QLatin1String("function")},
      {('i'), QLatin1String("if")},      {('i'), QLatin1String("in")},
      {('l'), QLatin1String("local")},   {('n'), QLatin1String("not")},
      {('o'), QLatin1String("or")},      {('r'), QLatin1String("repeat")},
      {('r'), QLatin1String("require")}, {('r'), QLatin1String("return")},
      {('t'), QLatin1String("then")},    {('u'), QLatin1String("until")},
      {('w'), QLatin1String("while")}};

  lua_literals = LanguageData{{('f'), QLatin1String("false")},
                              {('n'), QLatin1String("nil")},
                              {('t'), QLatin1String("true")}};

  lua_other = LanguageData{
      {('_'), QLatin1String("_G")},      {('_'), QLatin1String("__add")},
      {('_'), QLatin1String("__call")},  {('_'), QLatin1String("__contact")},
      {('_'), QLatin1String("__div")},   {('_'), QLatin1String("__eq")},
      {('_'), QLatin1String("__index")}, {('_'), QLatin1String("__le")},
      {('_'), QLatin1String("__lt")},    {('_'), QLatin1String("__mod")},
      {('_'), QLatin1String("__mul")},   {('_'), QLatin1String("__newindex")},
      {('_'), QLatin1String("__sub")},   {('_'), QLatin1String("__tostring")},
      {('_'), QLatin1String("__unm")}};

  lua_builtin = LanguageData{{('d'), QLatin1String("debug")},
                             {('d'), QLatin1String("dofile")},
                             {('g'), QLatin1String("getfenv")},
                             {('g'), QLatin1String("gethook")},
                             {('g'), QLatin1String("getinfo")},
                             {('g'), QLatin1String("getlocal")},
                             {('g'), QLatin1String("getmetatable")},
                             {('g'), QLatin1String("getregistry")},
                             {('g'), QLatin1String("getupvalue")},
                             {('i'), QLatin1String("ipairs")},
                             {('l'), QLatin1String("load")},
                             {('l'), QLatin1String("loadfile")},
                             {('l'), QLatin1String("loadstring")},
                             {('n'), QLatin1String("next")},
                             {('p'), QLatin1String("pairs")},
                             {('p'), QLatin1String("print")},
                             {('r'), QLatin1String("rawequal")},
                             {('r'), QLatin1String("rawget")},
                             {('r'), QLatin1String("rawset")},
                             {('s'), QLatin1String("select")},
                             {('s'), QLatin1String("setfenv")},
                             {('s'), QLatin1String("sethook")},
                             {('s'), QLatin1String("setlocal")},
                             {('s'), QLatin1String("setmetatable")},
                             {('s'), QLatin1String("setupvalue")},
                             {('t'), QLatin1String("tonumber")},
                             {('t'), QLatin1String("tostring")},
                             {('t'), QLatin1String("traceback")},
                             {('t'), QLatin1String("type")},
                             {('u'), QLatin1String("unpack")}};
}

void loadLuaData(LanguageData &typess, LanguageData &keywordss,
                 LanguageData &builtins, LanguageData &literalss,
                 LanguageData &others)
{
  if (!luaDataInitialized)
  {
    initLuaData();
    luaDataInitialized = true;
  }
  typess = lua_types;
  keywordss = lua_keywords;
  builtins = lua_builtin;
  literalss = lua_literals;
  others = lua_other;
}

/**********************************************************/
/* C/C++ Data *********************************************/
/**********************************************************/

static bool cppDataInitialized = false;
static LanguageData cpp_keywords;
static LanguageData cpp_types;
static LanguageData cpp_builtin;
static LanguageData cpp_literals;
static LanguageData cpp_other;
void initCppData()
{
  cpp_keywords = LanguageData{{('a'), QLatin1String("alignas")},
                              {('a'), QLatin1String("alignof")},
                              {('a'), QLatin1String("and")},
                              {('a'), QLatin1String("and_eq")},
                              {('a'), QLatin1String("asm")},
                              {('b'), QLatin1String("bit_and")},
                              {('b'), QLatin1String("bit_or")},
                              {('b'), QLatin1String("break")},
                              {('c'), QLatin1String("case")},
                              {('c'), QLatin1String("catch")},
                              {('c'), QLatin1String("compl")},
                              {('c'), QLatin1String("concept")},
                              {('c'), QLatin1String("const")},
                              {('c'), QLatin1String("constinit")},
                              {('c'), QLatin1String("constexpr")},
                              {('c'), QLatin1String("consteval")},
                              {('c'), QLatin1String("const_cast")},
                              {('c'), QLatin1String("continue")},
                              {('c'), QLatin1String("co_await")},
                              {('c'), QLatin1String("co_return")},
                              {('c'), QLatin1String("co_yield")},
                              {('d'), QLatin1String("decltype")},
                              {('d'), QLatin1String("default")},
                              {('d'), QLatin1String("delete")},
                              {('d'), QLatin1String("do")},
                              {('d'), QLatin1String("dynamic_cast")},
                              {('e'), QLatin1String("else")},
                              {('e'), QLatin1String("explicit")},
                              {('e'), QLatin1String("export")},
                              {('e'), QLatin1String("extern")},
                              {('f'), QLatin1String("for")},
                              {('f'), QLatin1String("friend")},
                              {('g'), QLatin1String("goto")},
                              {('i'), QLatin1String("if")},
                              {('i'), QLatin1String("inline")},
                              {('m'), QLatin1String("mutable")},
                              {('n'), QLatin1String("new")},
                              {('n'), QLatin1String("not")},
                              {('n'), QLatin1String("not_eq")},
                              {('n'), QLatin1String("noexcept")},
                              {('o'), QLatin1String("or")},
                              {('o'), QLatin1String("or_eq")},
                              {('o'), QLatin1String("operator")},
                              {('p'), QLatin1String("private")},
                              {('p'), QLatin1String("protected")},
                              {('p'), QLatin1String("public")},
                              {('r'), QLatin1String("register")},
                              {('r'), QLatin1String("reinterpret_cast")},
                              {('r'), QLatin1String("requires")},
                              {('r'), QLatin1String("return")},
                              {('s'), QLatin1String("signal")},
                              {('s'), QLatin1String("sizeof")},
                              {('s'), QLatin1String("slot")},
                              {('s'), QLatin1String("static")},
                              {('s'), QLatin1String("static_assert")},
                              {('s'), QLatin1String("static_cast")},
                              {('s'), QLatin1String("switch")},
                              {('t'), QLatin1String("template")},
                              {('t'), QLatin1String("this")},
                              {('t'), QLatin1String("thread_local")},
                              {('t'), QLatin1String("throw")},
                              {('t'), QLatin1String("try")},
                              {('t'), QLatin1String("typeid")},
                              {('t'), QLatin1String("typedef")},
                              {('t'), QLatin1String("typename")},
                              {('u'), QLatin1String("using")},
                              {('v'), QLatin1String("volatile")},
                              {('w'), QLatin1String("while")},
                              {('x'), QLatin1String("xor")},
                              {('x'), QLatin1String("xor_eq")}};

  cpp_types = {{('a'), QLatin1String("auto")},
               {('b'), QLatin1String("bool")},
               {('c'), QLatin1String("char")},
               {('c'), QLatin1String("char8_t")},
               {('c'), QLatin1String("char16_t")},
               {('c'), QLatin1String("char32_t")},
               {('c'), QLatin1String("class")},
               {('d'), QLatin1String("double")},
               {('e'), QLatin1String("enum")},
               {('f'), QLatin1String("float")},
               {('i'), QLatin1String("int")},
               {('i'), QLatin1String("int8_t")},
               {('i'), QLatin1String("int16_t")},
               {('i'), QLatin1String("int32_t")},
               {('i'), QLatin1String("int64_t")},
               {('i'), QLatin1String("int_fast8_t")},
               {('i'), QLatin1String("int_fast16_t")},
               {('i'), QLatin1String("int_fast32_t")},
               {('i'), QLatin1String("int_fast64_t")},
               {('i'), QLatin1String("intmax_t")},
               {('i'), QLatin1String("intptr_t")},
               {('l'), QLatin1String("long")},
               {('n'), QLatin1String("namespace")},
               {('Q'), QLatin1String("QHash")},
               {('Q'), QLatin1String("QList")},
               {('Q'), QLatin1String("QMap")},
               {('Q'), QLatin1String("QString")},
               {('Q'), QLatin1String("QVector")},
               {('s'), QLatin1String("short")},
               {('s'), QLatin1String("size_t")},
               {('s'), QLatin1String("signed")},
               {('s'), QLatin1String("struct")},
               {('s'), QLatin1String("ssize_t")},
               {('u'), QLatin1String("uint8_t")},
               {('u'), QLatin1String("uint16_t")},
               {('u'), QLatin1String("uint32_t")},
               {('u'), QLatin1String("uint64_t")},
               {('u'), QLatin1String("uint_fast8_t")},
               {('u'), QLatin1String("uint_fast16_t")},
               {('u'), QLatin1String("uint_fast32_t")},
               {('u'), QLatin1String("uint_fast64_t")},
               {('u'), QLatin1String("uint_least8_t")},
               {('u'), QLatin1String("uint_least16_t")},
               {('u'), QLatin1String("uint_least32_t")},
               {('u'), QLatin1String("uint_least64_t")},
               {('u'), QLatin1String("uintmax_t")},
               {('u'), QLatin1String("uintptr_t")},
               {('u'), QLatin1String("unsigned")},
               {('u'), QLatin1String("union")},
               {('v'), QLatin1String("void")},
               {('w'), QLatin1String("wchar_t")}};

  cpp_literals = {{('f'), QLatin1String("false")},
                  {('n'), QLatin1String("nullptr")},
                  {('N'), QLatin1String("NULL")},
                  {('t'), QLatin1String("true")}};

  cpp_builtin = {{('s'), QLatin1String("std")},
                 {('s'), QLatin1String("string")},
                 {('w'), QLatin1String("wstring")},
                 {('c'), QLatin1String("cin")},
                 {('c'), QLatin1String("cout")},
                 {('c'), QLatin1String("cerr")},
                 {('c'), QLatin1String("clog")},
                 {('s'), QLatin1String("stdin")},
                 {('s'), QLatin1String("stdout")},
                 {('s'), QLatin1String("stderr")},
                 {('s'), QLatin1String("stringstream")},
                 {('i'), QLatin1String("istringstream")},
                 {('o'), QLatin1String("ostringstream")},
                 {('a'), QLatin1String("auto_ptr")},
                 {('d'), QLatin1String("deque")},
                 {('l'), QLatin1String("list")},
                 {('q'), QLatin1String("queue")},
                 {('s'), QLatin1String("stack")},
                 {('v'), QLatin1String("vector")},
                 {('m'), QLatin1String("map")},
                 {('s'), QLatin1String("set")},
                 {('b'), QLatin1String("bitset")},
                 {('m'), QLatin1String("multiset")},
                 {('m'), QLatin1String("multimap")},
                 {('u'), QLatin1String("unordered_set")},
                 {('u'), QLatin1String("unordered_map")},
                 {('u'), QLatin1String("unordered_multiset")},
                 {('u'), QLatin1String("unordered_multimap")},
                 {('a'), QLatin1String("array")},
                 {('s'), QLatin1String("shared_ptr")},
                 {('a'), QLatin1String("abort")},
                 {('t'), QLatin1String("terminate")},
                 {('a'), QLatin1String("abs")},
                 {('a'), QLatin1String("acos")},
                 {('a'), QLatin1String("asin")},
                 {('a'), QLatin1String("atan2")},
                 {('a'), QLatin1String("atan")},
                 {('c'), QLatin1String("calloc")},
                 {('c'), QLatin1String("ceil")},
                 {('c'), QLatin1String("cosh")},
                 {('c'), QLatin1String("cos")},
                 {('e'), QLatin1String("exit")},
                 {('e'), QLatin1String("exp")},
                 {('f'), QLatin1String("fabs")},
                 {('f'), QLatin1String("floor")},
                 {('f'), QLatin1String("fmod")},
                 {('f'), QLatin1String("fprintf")},
                 {('f'), QLatin1String("fputs")},
                 {('f'), QLatin1String("free")},
                 {('f'), QLatin1String("frexp")},
                 {('f'), QLatin1String("fscanf")},
                 {('f'), QLatin1String("future")},
                 {('i'), QLatin1String("isalnum")},
                 {('i'), QLatin1String("isalpha")},
                 {('i'), QLatin1String("iscntrl")},
                 {('i'), QLatin1String("isdigit")},
                 {('i'), QLatin1String("isgraph")},
                 {('i'), QLatin1String("islower")},
                 {('i'), QLatin1String("isprint")},
                 {('i'), QLatin1String("ispunct")},
                 {('i'), QLatin1String("isspace")},
                 {('i'), QLatin1String("isupper")},
                 {('i'), QLatin1String("isxdigit")},
                 {('t'), QLatin1String("tolower")},
                 {('t'), QLatin1String("toupper")},
                 {('l'), QLatin1String("labs")},
                 {('l'), QLatin1String("ldexp")},
                 {('l'), QLatin1String("log10")},
                 {('l'), QLatin1String("log")},
                 {('m'), QLatin1String("malloc")},
                 {('r'), QLatin1String("realloc")},
                 {('m'), QLatin1String("main")},
                 {('m'), QLatin1String("memchr")},
                 {('m'), QLatin1String("memcmp")},
                 {('m'), QLatin1String("memcpy")},
                 {('m'), QLatin1String("memset")},
                 {('m'), QLatin1String("modf")},
                 {('p'), QLatin1String("pow")},
                 {('p'), QLatin1String("printf")},
                 {('p'), QLatin1String("putchar")},
                 {('p'), QLatin1String("puts")},
                 {('s'), QLatin1String("scanf")},
                 {('s'), QLatin1String("sinh")},
                 {('s'), QLatin1String("sin")},
                 {('s'), QLatin1String("snprintf")},
                 {('s'), QLatin1String("sprintf")},
                 {('s'), QLatin1String("sqrt")},
                 {('s'), QLatin1String("sscanf")},
                 {('s'), QLatin1String("strcat")},
                 {('s'), QLatin1String("strchr")},
                 {('s'), QLatin1String("strcmp")},
                 {('s'), QLatin1String("strcpy")},
                 {('s'), QLatin1String("strcspn")},
                 {('s'), QLatin1String("strlen")},
                 {('s'), QLatin1String("strncat")},
                 {('s'), QLatin1String("strncmp")},
                 {('s'), QLatin1String("strncpy")},
                 {('s'), QLatin1String("strpbrk")},
                 {('s'), QLatin1String("strrchr")},
                 {('s'), QLatin1String("strspn")},
                 {('s'), QLatin1String("strstr")},
                 {('t'), QLatin1String("tanh")},
                 {('t'), QLatin1String("tan")},
                 {('v'), QLatin1String("vfprintf")},
                 {('v'), QLatin1String("vprintf")},
                 {('v'), QLatin1String("vsprintf")},
                 {('e'), QLatin1String("endl")},
                 {('i'), QLatin1String("initializer_list")},
                 {('u'), QLatin1String("unique_ptr")},
                 {('c'), QLatin1String("complex")},
                 {('i'), QLatin1String("imaginary")}};

  cpp_other
      = {{('d'), QLatin1String("define")},  {('e'), QLatin1String("else")},
         {('e'), QLatin1String("elif")},    {('e'), QLatin1String("endif")},
         {('e'), QLatin1String("error")},   {('i'), QLatin1String("if")},
         {('i'), QLatin1String("ifdef")},   {('i'), QLatin1String("ifndef")},
         {('i'), QLatin1String("include")}, {('l'), QLatin1String("line")},
         {('p'), QLatin1String("pragma")},  {('P'), QLatin1String("_Pragma")},
         {('u'), QLatin1String("undef")},   {('w'), QLatin1String("warning")}};
}
void loadCppData(LanguageData &typess, LanguageData &keywordss,
                 LanguageData &builtins, LanguageData &literalss,
                 LanguageData &others)
{
  if (!cppDataInitialized)
  {
    initCppData();
    cppDataInitialized = true;
  }

  typess = cpp_types;
  keywordss = cpp_keywords;
  builtins = cpp_builtin;
  literalss = cpp_literals;
  others = cpp_other;
}

/**********************************************************/
/* Shell Data *********************************************/
/**********************************************************/

static bool shellDataInitialized = false;
static LanguageData shell_keywords;
static LanguageData shell_types;
static LanguageData shell_literals;
static LanguageData shell_builtin;
static LanguageData shell_other;
void initShellData()
{
  shell_keywords
      = {{('i'), QLatin1String("if")},      {('t'), QLatin1String("then")},
         {('e'), QLatin1String("else")},    {('e'), QLatin1String("elif")},
         {('f'), QLatin1String("fi")},      {('f'), QLatin1String("for")},
         {('w'), QLatin1String("while")},   {('i'), QLatin1String("in")},
         {('d'), QLatin1String("do")},      {('d'), QLatin1String("done")},
         {('c'), QLatin1String("case")},    {('e'), QLatin1String("esac")},
         {('f'), QLatin1String("function")}};

  shell_types = {};

  shell_literals
      = {{('f'), QLatin1String("false")}, {('t'), QLatin1String("true")}};

  shell_builtin = {{('b'), QLatin1String("break")},
                   {('c'), QLatin1String("cd")},
                   {('c'), QLatin1String("continue")},
                   {('e'), QLatin1String("eval")},
                   {('e'), QLatin1String("exec")},
                   {('e'), QLatin1String("exit")},
                   {('e'), QLatin1String("export")},
                   {('g'), QLatin1String("getopts")},
                   {('h'), QLatin1String("hash")},
                   {('p'), QLatin1String("pwd")},
                   {('r'), QLatin1String("readonly")},
                   {('r'), QLatin1String("return")},
                   {('s'), QLatin1String("shift")},
                   {('t'), QLatin1String("test")},
                   {('t'), QLatin1String("timestrap")},
                   {('u'), QLatin1String("umask")},
                   {('u'), QLatin1String("unset")},
                   {('B'), QLatin1String("Bash")},
                   {('a'), QLatin1String("alias")},
                   {('b'), QLatin1String("bind")},
                   {('b'), QLatin1String("builtin")},
                   {('c'), QLatin1String("caller")},
                   {('c'), QLatin1String("command")},
                   {('d'), QLatin1String("declare")},
                   {('e'), QLatin1String("echo")},
                   {('e'), QLatin1String("enable")},
                   {('h'), QLatin1String("help")},
                   {('l'), QLatin1String("let")},
                   {('l'), QLatin1String("local")},
                   {('l'), QLatin1String("logout")},
                   {('m'), QLatin1String("mapfile")},
                   {('p'), QLatin1String("printfread")},
                   {('r'), QLatin1String("readarray")},
                   {('s'), QLatin1String("source")},
                   {('t'), QLatin1String("type")},
                   {('t'), QLatin1String("typeset")},
                   {('u'), QLatin1String("ulimit")},
                   {('u'), QLatin1String("unalias")},
                   {('m'), QLatin1String("modifiers")},
                   {('s'), QLatin1String("set")},
                   {('s'), QLatin1String("shopt")},
                   {('a'), QLatin1String("autoload")},
                   {('b'), QLatin1String("bg")},
                   {('b'), QLatin1String("bindkey")},
                   {('b'), QLatin1String("bye")},
                   {('c'), QLatin1String("cap")},
                   {('c'), QLatin1String("chdir")},
                   {('c'), QLatin1String("clone")},
                   {('c'), QLatin1String("comparguments")},
                   {('c'), QLatin1String("compcall")},
                   {('c'), QLatin1String("compctl")},
                   {('c'), QLatin1String("compdescribe")},
                   {('c'), QLatin1String("compfilescompgroups")},
                   {('c'), QLatin1String("compquote")},
                   {('c'), QLatin1String("comptags")},
                   {('c'), QLatin1String("comptry")},
                   {('c'), QLatin1String("compvalues")},
                   {('d'), QLatin1String("dirs")},
                   {('d'), QLatin1String("disable")},
                   {('d'), QLatin1String("disown")},
                   {('e'), QLatin1String("echotc")},
                   {('e'), QLatin1String("echoti")},
                   {('e'), QLatin1String("emulatefc")},
                   {('f'), QLatin1String("fg")},
                   {('f'), QLatin1String("float")},
                   {('f'), QLatin1String("functions")},
                   {('g'), QLatin1String("getcap")},
                   {('g'), QLatin1String("getln")},
                   {('h'), QLatin1String("history")},
                   {('i'), QLatin1String("integer")},
                   {('j'), QLatin1String("jobs")},
                   {('k'), QLatin1String("kill")},
                   {('l'), QLatin1String("limit")},
                   {('l'), QLatin1String("log")},
                   {('n'), QLatin1String("noglob")},
                   {('p'), QLatin1String("popd")},
                   {('p'), QLatin1String("printpushd")},
                   {('p'), QLatin1String("pushln")},
                   {('r'), QLatin1String("rehash")},
                   {('s'), QLatin1String("sched")},
                   {('s'), QLatin1String("setcap")},
                   {('s'), QLatin1String("setopt")},
                   {('s'), QLatin1String("stat")},
                   {('s'), QLatin1String("suspend")},
                   {('t'), QLatin1String("ttyctl")},
                   {('u'), QLatin1String("unfunction")},
                   {('u'), QLatin1String("unhash")},
                   {('u'), QLatin1String("unlimitunsetopt")},
                   {('v'), QLatin1String("vared")},
                   {('w'), QLatin1String("wait")},
                   {('w'), QLatin1String("whence")},
                   {('w'), QLatin1String("where")},
                   {('w'), QLatin1String("which")},
                   {('z'), QLatin1String("zcompile")},
                   {('z'), QLatin1String("zformat")},
                   {('z'), QLatin1String("zftp")},
                   {('z'), QLatin1String("zle")},
                   {('z'), QLatin1String("zmodload")},
                   {('z'), QLatin1String("zparseopts")},
                   {('z'), QLatin1String("zprof")},
                   {('z'), QLatin1String("zpty")},
                   {('z'), QLatin1String("zregexparse")},
                   {('z'), QLatin1String("zsocket")},
                   {('z'), QLatin1String("zstyle")},
                   {('z'), QLatin1String("ztcp")},
                   {('g'), QLatin1String("git")},
                   {('r'), QLatin1String("rm")},
                   {('s'), QLatin1String("sudo")},
                   {('f'), QLatin1String("fdisk")},
                   {('a'), QLatin1String("apt")},
                   {('s'), QLatin1String("snap")},
                   {('f'), QLatin1String("flatpak")},
                   {('s'), QLatin1String("snapcraft")},
                   {('y'), QLatin1String("yaourt")},
                   {('n'), QLatin1String("nmcli")},
                   {('p'), QLatin1String("pacman")},
                   {('p'), QLatin1String("pamac")},
                   {('f'), QLatin1String("fsck")},
                   {('m'), QLatin1String("mount")},
                   {('m'), QLatin1String("mkdir")},
                   {('m'), QLatin1String("mkswap")},
                   {('s'), QLatin1String("sleep")},
                   {('l'), QLatin1String("ls")},
                   {('w'), QLatin1String("wget")},
                   {('k'), QLatin1String("kill")},
                   {('k'), QLatin1String("killall")},
                   {('g'), QLatin1String("gdb")},
                   {('Q'), QLatin1String("QOwnNotes")},
                   {('q'), QLatin1String("qownnotes")},
                   {('d'), QLatin1String("docker")},
                   {('o'), QLatin1String("openssl")},
                   {('p'), QLatin1String("php")},
                   {('p'), QLatin1String("python")},
                   {('p'), QLatin1String("perl")},
                   {('g'), QLatin1String("go")},
                   {('c'), QLatin1String("curl")}};

  shell_other = {};
}

void loadShellData(LanguageData &types, LanguageData &keywords,
                   LanguageData &builtin, LanguageData &literals,
                   LanguageData &other)
{
  if (!shellDataInitialized)
  {
    initShellData();
    shellDataInitialized = true;
  }
  types = shell_types;
  keywords = shell_keywords;
  builtin = shell_builtin;
  literals = shell_literals;
  other = shell_other;
}

/**********************************************************/
/* JS Data *********************************************/
/**********************************************************/
static bool JSDataInitialized = false;
static LanguageData js_keywords;
static LanguageData js_types;
static LanguageData js_literals;
static LanguageData js_builtin;
static LanguageData js_other;
void initJSData()
{
  js_keywords = {
      {('i'), QLatin1String("in")},         {('o'), QLatin1String("of")},
      {('i'), QLatin1String("if")},         {('f'), QLatin1String("for")},
      {('w'), QLatin1String("while")},      {('f'), QLatin1String("finally")},
      {('n'), QLatin1String("new")},        {('f'), QLatin1String("function")},
      {('d'), QLatin1String("do")},         {('r'), QLatin1String("return")},
      {('v'), QLatin1String("void")},       {('e'), QLatin1String("else")},
      {('b'), QLatin1String("break")},      {('c'), QLatin1String("catch")},
      {('i'), QLatin1String("instanceof")}, {('w'), QLatin1String("with")},
      {('t'), QLatin1String("throw")},      {('c'), QLatin1String("case")},
      {('d'), QLatin1String("default")},    {('t'), QLatin1String("try")},
      {('t'), QLatin1String("this")},       {('s'), QLatin1String("switch")},
      {('c'), QLatin1String("continue")},   {('t'), QLatin1String("typeof")},
      {('d'), QLatin1String("delete")},     {('l'), QLatin1String("let")},
      {('y'), QLatin1String("yield")},      {('c'), QLatin1String("const")},
      {('e'), QLatin1String("export")},     {('s'), QLatin1String("super")},
      {('d'), QLatin1String("debugger")},   {('a'), QLatin1String("as")},
      {('a'), QLatin1String("async")},      {('a'), QLatin1String("await")},
      {('s'), QLatin1String("static")},     {('i'), QLatin1String("import")},
      {('f'), QLatin1String("from")},       {('a'), QLatin1String("as")}};

  js_types
      = {{('v'), QLatin1String("var")},   {('c'), QLatin1String("class")},
         {('b'), QLatin1String("byte")},  {('e'), QLatin1String("enum")},
         {('f'), QLatin1String("float")}, {('s'), QLatin1String("short")},
         {('l'), QLatin1String("long")},  {('i'), QLatin1String("int")},
         {('v'), QLatin1String("void")},  {('b'), QLatin1String("boolean")},
         {('d'), QLatin1String("double")}};

  js_literals
      = {{('f'), QLatin1String("false")}, {('n'), QLatin1String("null")},
         {('t'), QLatin1String("true")},  {('u'), QLatin1String("undefined")},
         {('N'), QLatin1String("NaN")},   {('I'), QLatin1String("Infinity")}};

  js_builtin = {{('e'), QLatin1String("eval")},
                {('i'), QLatin1String("isFinite")},
                {('i'), QLatin1String("isNaN")},
                {('p'), QLatin1String("parseFloat")},
                {('p'), QLatin1String("parseInt")},
                {('d'), QLatin1String("decodeURI")},
                {('d'), QLatin1String("decodeURIComponent")},
                {('e'), QLatin1String("encodeURI")},
                {('e'), QLatin1String("encodeURIComponent")},
                {('e'), QLatin1String("escape")},
                {('u'), QLatin1String("unescape")},
                {('O'), QLatin1String("Object")},
                {('F'), QLatin1String("Function")},
                {('B'), QLatin1String("Boolean")},
                {('E'), QLatin1String("Error")},
                {('E'), QLatin1String("EvalError")},
                {('I'), QLatin1String("InternalError")},
                {('R'), QLatin1String("RangeError")},
                {('R'), QLatin1String("ReferenceError")},
                {('S'), QLatin1String("StopIteration")},
                {('S'), QLatin1String("SyntaxError")},
                {('T'), QLatin1String("TypeError")},
                {('U'), QLatin1String("URIError")},
                {('N'), QLatin1String("Number")},
                {('M'), QLatin1String("Math")},
                {('D'), QLatin1String("Date")},
                {('S'), QLatin1String("String")},
                {('R'), QLatin1String("RegExp")},
                {('A'), QLatin1String("Array")},
                {('F'), QLatin1String("Float32Array")},
                {('F'), QLatin1String("Float64Array")},
                {('I'), QLatin1String("Int16Array")},
                {('I'), QLatin1String("Int32Array")},
                {('I'), QLatin1String("Int8Array")},
                {('U'), QLatin1String("Uint16Array")},
                {('U'), QLatin1String("Uint32Array")},
                {('U'), QLatin1String("Uint8Array")},
                {('U'), QLatin1String("Uint8ClampedArray")},
                {('A'), QLatin1String("ArrayBuffer")},
                {('D'), QLatin1String("DataView")},
                {('J'), QLatin1String("JSON")},
                {('I'), QLatin1String("Intl")},
                {('a'), QLatin1String("arguments")},
                {('r'), QLatin1String("require")},
                {('m'), QLatin1String("module")},
                {('c'), QLatin1String("console")},
                {('w'), QLatin1String("window")},
                {('d'), QLatin1String("document")},
                {('S'), QLatin1String("Symbol")},
                {('S'), QLatin1String("Set")},
                {('M'), QLatin1String("Map")},
                {('W'), QLatin1String("WeakSet")},
                {('W'), QLatin1String("WeakMap")},
                {('P'), QLatin1String("Proxy")},
                {('R'), QLatin1String("Reflect")},
                {('P'), QLatin1String("Promise")}};

  js_other = {};
}

void loadJSData(LanguageData &types, LanguageData &keywords,
                LanguageData &builtin, LanguageData &literals,
                LanguageData &other)
{
  if (!JSDataInitialized)
  {
    initJSData();
    JSDataInitialized = true;
  }
  types = js_types;
  keywords = js_keywords;
  builtin = js_builtin;
  literals = js_literals;
  other = js_other;
}

/**********************************************************/
/* PHP Data *********************************************/
/**********************************************************/
static bool PHPDataInitialized = false;
static LanguageData php_keywords;
static LanguageData php_types;
static LanguageData php_literals;
static LanguageData php_builtin;
static LanguageData php_other;
void initPHPData()
{
  php_keywords = {{('a'), QLatin1String("and")},
                  {('l'), QLatin1String("list")},
                  {('a'), QLatin1String("abstract")},
                  {('g'), QLatin1String("global")},
                  {('p'), QLatin1String("private")},
                  {('e'), QLatin1String("echo")},
                  {('i'), QLatin1String("interface")},
                  {('a'), QLatin1String("as")},
                  {('s'), QLatin1String("static")},
                  {('e'), QLatin1String("endswitch")},
                  {('i'), QLatin1String("if")},
                  {('e'), QLatin1String("endwhile")},
                  {('o'), QLatin1String("or")},
                  {('c'), QLatin1String("const")},
                  {('f'), QLatin1String("for")},
                  {('e'), QLatin1String("endforeach")},
                  {('s'), QLatin1String("self")},
                  {('w'), QLatin1String("while")},
                  {('i'), QLatin1String("isset")},
                  {('p'), QLatin1String("public")},
                  {('p'), QLatin1String("protected")},
                  {('e'), QLatin1String("exit")},
                  {('f'), QLatin1String("foreach")},
                  {('t'), QLatin1String("throw")},
                  {('e'), QLatin1String("elseif")},
                  {('e'), QLatin1String("empty")},
                  {('d'), QLatin1String("do")},
                  {('x'), QLatin1String("xor")},
                  {('r'), QLatin1String("return")},
                  {('p'), QLatin1String("parent")},
                  {('c'), QLatin1String("clone")},
                  {('u'), QLatin1String("use")},
                  {('e'), QLatin1String("else")},
                  {('b'), QLatin1String("break")},
                  {('p'), QLatin1String("print")},
                  {('e'), QLatin1String("eval")},
                  {('n'), QLatin1String("new")},
                  {('c'), QLatin1String("catch")},
                  {('c'), QLatin1String("case")},
                  {('e'), QLatin1String("exception")},
                  {('d'), QLatin1String("default")},
                  {('d'), QLatin1String("die")},
                  {('e'), QLatin1String("enddeclare")},
                  {('f'), QLatin1String("final")},
                  {('t'), QLatin1String("try")},
                  {('s'), QLatin1String("switch")},
                  {('c'), QLatin1String("continue")},
                  {('e'), QLatin1String("endfor")},
                  {('e'), QLatin1String("endif")},
                  {('d'), QLatin1String("declare")},
                  {('u'), QLatin1String("unset")},
                  {('t'), QLatin1String("trait")},
                  {('g'), QLatin1String("goto")},
                  {('i'), QLatin1String("instanceof")},
                  {('i'), QLatin1String("insteadof")},
                  {('y'), QLatin1String("yield")},
                  {('f'), QLatin1String("finally")}};

  php_types = {{('v'), QLatin1String("var")},
               {('c'), QLatin1String("class")},
               {('e'), QLatin1String("enum")},
               {('a'), QLatin1String("array")}};

  php_literals = {{('f'), QLatin1String("false")},
                  {('t'), QLatin1String("true")},
                  {('n'), QLatin1String("null")}};

  php_builtin = {

  };

  php_other = {{('i'), QLatin1String("include_once")},
               {('i'), QLatin1String("include")},
               {('_'), QLatin1String("__FILE__")},
               {('r'), QLatin1String("require")},
               {('r'), QLatin1String("require_once")},
               {('_'), QLatin1String("__CLASS__")},
               {('_'), QLatin1String("__LINE__")},
               {('_'), QLatin1String("__METHOD__")},
               {('_'), QLatin1String("__FUNCTION__")},
               {('_'), QLatin1String("__DIR__")},
               {('_'), QLatin1String("__NAMESPACE__")},

               {('S'), QLatin1String("SERVER")},
               {('G'), QLatin1String("GET")},
               {('P'), QLatin1String("POST")},
               {('F'), QLatin1String("FILES")},
               {('R'), QLatin1String("REQUEST")},
               {('S'), QLatin1String("SESSION")},
               {('E'), QLatin1String("ENV")},
               {('C'), QLatin1String("COOKIE")},
               {('G'), QLatin1String("GLOBALS")},
               {('H'), QLatin1String("HTTP_RAW_POST_DATA")},
               {('a'), QLatin1String("argc")},
               {('a'), QLatin1String("argv")},
               {('p'), QLatin1String("php_errormsg")},
               {('h'), QLatin1String("http_response_header")}};
}
void loadPHPData(LanguageData &types, LanguageData &keywords,
                 LanguageData &builtin, LanguageData &literals,
                 LanguageData &other)
{
  if (!PHPDataInitialized)
  {
    initPHPData();
    PHPDataInitialized = true;
  }
  types = php_types;
  keywords = php_keywords;
  builtin = php_builtin;
  literals = php_literals;
  other = php_other;
}

/**********************************************************/
/* QML Data *********************************************/
/**********************************************************/
static bool QMLDataInitialized = false;
static LanguageData qml_keywords;
static LanguageData qml_types;
static LanguageData qml_literals;
static LanguageData qml_builtin;
static LanguageData qml_other;

void initQMLData()
{
  qml_keywords = {{('d'), QLatin1String("default")},
                  {('p'), QLatin1String("property")},
                  {('i'), QLatin1String("int")},
                  {('v'), QLatin1String("var")},
                  {('s'), QLatin1String("string")},
                  {('f'), QLatin1String("function")},
                  {('r'), QLatin1String("readonly")},
                  {('M'), QLatin1String("MouseArea")},
                  {('d'), QLatin1String("delegate")},
                  {('i'), QLatin1String("if")},
                  {('e'), QLatin1String("else")},

                  {('e'), QLatin1String("eval")},
                  {('i'), QLatin1String("isFinite")},
                  {('i'), QLatin1String("isNaN")},
                  {('p'), QLatin1String("parseFloat")},
                  {('p'), QLatin1String("parseInt")},
                  {('d'), QLatin1String("decodeURI")},
                  {('d'), QLatin1String("decodeURIComponent")},
                  {('e'), QLatin1String("encodeURI")},
                  {('e'), QLatin1String("encodeURIComponent")},
                  {('e'), QLatin1String("escape")},
                  {('u'), QLatin1String("unescape")},
                  {('O'), QLatin1String("Object")},
                  {('E'), QLatin1String("Error")},
                  {('E'), QLatin1String("EvalError")},
                  {('I'), QLatin1String("InternalError")},
                  {('R'), QLatin1String("RangeError")},
                  {('R'), QLatin1String("ReferenceError")},
                  {('S'), QLatin1String("StopIteration")},
                  {('S'), QLatin1String("SyntaxError")},
                  {('T'), QLatin1String("TypeError")},
                  {('U'), QLatin1String("URIError")},
                  {('N'), QLatin1String("Number")},
                  {('M'), QLatin1String("Math")},
                  {('D'), QLatin1String("Date")},
                  {('S'), QLatin1String("String")},
                  {('R'), QLatin1String("RegExp")},
                  {('A'), QLatin1String("Array")},
                  {('F'), QLatin1String("Float32Array")},
                  {('F'), QLatin1String("Float64Array")},
                  {('I'), QLatin1String("Int16Array")},
                  {('I'), QLatin1String("Int32Array")},
                  {('I'), QLatin1String("Int8Array")},
                  {('U'), QLatin1String("Uint16Array")},
                  {('U'), QLatin1String("Uint32Array")},
                  {('U'), QLatin1String("Uint8Array")},
                  {('U'), QLatin1String("Uint8ClampedArray")},
                  {('A'), QLatin1String("ArrayBuffer")},
                  {('D'), QLatin1String("DataView")},
                  {('J'), QLatin1String("JSON")},
                  {('I'), QLatin1String("Intl")},
                  {('a'), QLatin1String("arguments")},
                  {('m'), QLatin1String("module")},
                  {('c'), QLatin1String("console")},
                  {('w'), QLatin1String("window")},
                  {('d'), QLatin1String("document")},
                  {('S'), QLatin1String("Symbol")},
                  {('S'), QLatin1String("Set")},
                  {('M'), QLatin1String("Map")},
                  {('W'), QLatin1String("WeakSet")},
                  {('W'), QLatin1String("WeakMap")},
                  {('P'), QLatin1String("Proxy")},
                  {('R'), QLatin1String("Reflect")},
                  {('B'), QLatin1String("Behavior")},
                  {('c'), QLatin1String("color")},
                  {('c'), QLatin1String("coordinate")},
                  {('d'), QLatin1String("date")},
                  {('e'), QLatin1String("enumeration")},
                  {('f'), QLatin1String("font")},
                  {('g'), QLatin1String("geocircle")},
                  {('g'), QLatin1String("georectangle")},
                  {('g'), QLatin1String("geoshape")},
                  {('l'), QLatin1String("list")},
                  {('m'), QLatin1String("matrix4x4")},
                  {('p'), QLatin1String("parent")},
                  {('p'), QLatin1String("point")},
                  {('q'), QLatin1String("quaternion")},
                  {('r'), QLatin1String("real")},
                  {('s'), QLatin1String("size")},
                  {('s'), QLatin1String("string")},
                  {('v'), QLatin1String("variant")},
                  {('v'), QLatin1String("vector2d")},
                  {('v'), QLatin1String("vector3d")},
                  {('v'), QLatin1String("vector4d")},
                  {('P'), QLatin1String("Promise")}};

  qml_types = {
      {('R'), QLatin1String("Rectangle")}, {('T'), QLatin1String("Text")},
      {('c'), QLatin1String("color")},     {('I'), QLatin1String("Item")},
      {('u'), QLatin1String("url")},       {('C'), QLatin1String("Component")},
      {('B'), QLatin1String("Button")},    {('T'), QLatin1String("TextInput")},
      {('L'), QLatin1String("ListView")},

  };

  qml_literals
      = {{('f'), QLatin1String("false")}, {('t'), QLatin1String("true")}};

  qml_builtin = {

  };

  qml_other = {{('i'), QLatin1String("import")}};
}
void loadQMLData(LanguageData &types, LanguageData &keywords,
                 LanguageData &builtin, LanguageData &literals,
                 LanguageData &other)
{
  if (!QMLDataInitialized)
  {
    initQMLData();
    QMLDataInitialized = true;
  }
  types = qml_types;
  keywords = qml_keywords;
  builtin = qml_builtin;
  literals = qml_literals;
  other = qml_other;
}

/**********************************************************/
/* Python Data *********************************************/
/**********************************************************/
static bool PyDataInitialized = false;
static LanguageData py_keywords;
static LanguageData py_types;
static LanguageData py_literals;
static LanguageData py_builtin;
static LanguageData py_other;

void initPyData()
{
  py_keywords = {
      {('a'), QLatin1String("and")},      {('e'), QLatin1String("elif")},
      {('i'), QLatin1String("is")},       {('g'), QLatin1String("global")},
      {('a'), QLatin1String("as")},       {('i'), QLatin1String("in")},
      {('i'), QLatin1String("if")},       {('f'), QLatin1String("from")},
      {('r'), QLatin1String("raise")},    {('f'), QLatin1String("for")},
      {('e'), QLatin1String("except")},   {('f'), QLatin1String("finally")},
      {('p'), QLatin1String("print")},    {('p'), QLatin1String("pass")},
      {('r'), QLatin1String("return")},   {('e'), QLatin1String("exec")},
      {('e'), QLatin1String("else")},     {('b'), QLatin1String("break")},
      {('n'), QLatin1String("not")},      {('w'), QLatin1String("with")},
      {('c'), QLatin1String("class")},    {('a'), QLatin1String("assert")},
      {('y'), QLatin1String("yield")},    {('t'), QLatin1String("try")},
      {('w'), QLatin1String("while")},    {('c'), QLatin1String("continue")},
      {('d'), QLatin1String("del")},      {('o'), QLatin1String("or")},
      {('d'), QLatin1String("def")},      {('l'), QLatin1String("lambda")},
      {('a'), QLatin1String("async")},    {('a'), QLatin1String("await")},
      {('n'), QLatin1String("nonlocal")},
  };

  py_types = {

  };

  py_literals = {{('F'), QLatin1String("False")},
                 {('T'), QLatin1String("True")},
                 {('N'), QLatin1String("None")}};

  py_builtin = {{('_'), QLatin1String("__import__")},
                {('a'), QLatin1String("abs")},
                {('a'), QLatin1String("all")},
                {('a'), QLatin1String("any")},
                {('a'), QLatin1String("apply")},
                {('a'), QLatin1String("ascii")},
                {('b'), QLatin1String("basestring")},
                {('b'), QLatin1String("bin")},
                {('b'), QLatin1String("bool")},
                {('b'), QLatin1String("buffer")},
                {('b'), QLatin1String("bytearray")},
                {('b'), QLatin1String("bytes")},
                {('c'), QLatin1String("callable")},
                {('c'), QLatin1String("chr")},
                {('c'), QLatin1String("classmethod")},
                {('c'), QLatin1String("cmp")},
                {('c'), QLatin1String("coerce")},
                {('c'), QLatin1String("compile")},
                {('c'), QLatin1String("complex")},
                {('d'), QLatin1String("delattr")},
                {('d'), QLatin1String("dict")},
                {('d'), QLatin1String("dir")},
                {('d'), QLatin1String("divmod")},
                {('e'), QLatin1String("enumerate")},
                {('e'), QLatin1String("eval")},
                {('e'), QLatin1String("execfile")},
                {('f'), QLatin1String("file")},
                {('f'), QLatin1String("filter")},
                {('f'), QLatin1String("float")},
                {('f'), QLatin1String("format")},
                {('f'), QLatin1String("frozenset")},
                {('g'), QLatin1String("getattr")},
                {('g'), QLatin1String("globals")},
                {('h'), QLatin1String("hasattr")},
                {('h'), QLatin1String("hash")},
                {('h'), QLatin1String("help")},
                {('h'), QLatin1String("hex")},
                {('i'), QLatin1String("id")},
                {('i'), QLatin1String("input")},
                {('i'), QLatin1String("int")},
                {('i'), QLatin1String("intern")},
                {('i'), QLatin1String("isinstance")},
                {('i'), QLatin1String("issubclass")},
                {('i'), QLatin1String("iter")},
                {('l'), QLatin1String("len")},
                {('l'), QLatin1String("list")},
                {('l'), QLatin1String("locals")},
                {('l'), QLatin1String("long")},
                {('m'), QLatin1String("map")},
                {('m'), QLatin1String("max")},
                {('m'), QLatin1String("memoryview")},
                {('m'), QLatin1String("min")},
                {('n'), QLatin1String("next")},
                {('o'), QLatin1String("object")},
                {('o'), QLatin1String("oct")},
                {('o'), QLatin1String("open")},
                {('o'), QLatin1String("ord")},
                {('p'), QLatin1String("pow")},
                {('p'), QLatin1String("property")},
                {('r'), QLatin1String("range")},
                {('r'), QLatin1String("raw_input")},
                {('r'), QLatin1String("reduce")},
                {('r'), QLatin1String("reload")},
                {('r'), QLatin1String("repr")},
                {('r'), QLatin1String("reversed")},
                {('r'), QLatin1String("round")},
                {('s'), QLatin1String("set")},
                {('s'), QLatin1String("setattr")},
                {('s'), QLatin1String("slice")},
                {('s'), QLatin1String("sorted")},
                {('s'), QLatin1String("staticmethod")},
                {('s'), QLatin1String("str")},
                {('s'), QLatin1String("sum")},
                {('s'), QLatin1String("super")},
                {('t'), QLatin1String("tuple")},
                {('t'), QLatin1String("type")},
                {('u'), QLatin1String("unichr")},
                {('u'), QLatin1String("unicode")},
                {('v'), QLatin1String("vars")},
                {('x'), QLatin1String("xrange")},
                {('z'), QLatin1String("zip")}};

  py_other = {{('i'), QLatin1String("import")}};
}
void loadPythonData(LanguageData &types, LanguageData &keywords,
                    LanguageData &builtin, LanguageData &literals,
                    LanguageData &other)
{
  if (!PyDataInitialized)
  {
    initPyData();
    PyDataInitialized = true;
  }
  types = py_types;
  keywords = py_keywords;
  builtin = py_builtin;
  literals = py_literals;
  other = py_other;
}

/********************************************************/
/***   Rust DATA      ***********************************/
/********************************************************/
static bool rustDataInitialized = false;
static LanguageData rust_keywords;
static LanguageData rust_types;
static LanguageData rust_literals;
static LanguageData rust_builtin;
static LanguageData rust_other;
void initRustData()
{
  rust_keywords = {
      {('a'), QLatin1String("abstract")}, {('a'), QLatin1String("alignof")},
      {('a'), QLatin1String("as")},       {('a'), QLatin1String("async")},
      {('a'), QLatin1String("await")},    {('b'), QLatin1String("be")},
      {('b'), QLatin1String("box")},      {('b'), QLatin1String("break")},
      {('c'), QLatin1String("const")},    {('c'), QLatin1String("continue")},
      {('c'), QLatin1String("crate")},    {('d'), QLatin1String("do")},
      {('d'), QLatin1String("dyn")},      {('e'), QLatin1String("else")},
      {('e'), QLatin1String("extern")},   {('f'), QLatin1String("final")},
      {('f'), QLatin1String("fn")},       {('f'), QLatin1String("for")},
      {('i'), QLatin1String("if")},       {('i'), QLatin1String("impl")},
      {('i'), QLatin1String("in")},       {('l'), QLatin1String("let")},
      {('l'), QLatin1String("loop")},     {('m'), QLatin1String("match")},
      {('m'), QLatin1String("mod")},      {('m'), QLatin1String("move")},
      {('m'), QLatin1String("mut")},      {('o'), QLatin1String("offsetof")},
      {('o'), QLatin1String("once")},     {('o'), QLatin1String("override")},
      {('p'), QLatin1String("priv")},     {('p'), QLatin1String("pub")},
      {('p'), QLatin1String("pure")},     {('r'), QLatin1String("ref")},
      {('r'), QLatin1String("return")},   {('s'), QLatin1String("sizeof")},
      {('s'), QLatin1String("static")},   {('s'), QLatin1String("self")},
      {('S'), QLatin1String("Self")},     {('s'), QLatin1String("super")},
      {('t'), QLatin1String("trait")},    {('t'), QLatin1String("type")},
      {('t'), QLatin1String("typeof")},   {('u'), QLatin1String("unsafe")},
      {('u'), QLatin1String("unsized")},  {('u'), QLatin1String("use")},
      {('v'), QLatin1String("virtual")},  {('w'), QLatin1String("where")},
      {('w'), QLatin1String("while")},    {('y'), QLatin1String("yield")},
  };

  rust_types
      = {{('u'), QLatin1String("union")},  {('e'), QLatin1String("enum")},
         {('s'), QLatin1String("struct")},

         {('i'), QLatin1String("i8")},     {('i'), QLatin1String("i16")},
         {('i'), QLatin1String("i32")},    {('i'), QLatin1String("i64")},
         {('i'), QLatin1String("i128")},   {('i'), QLatin1String("isize")},
         {('u'), QLatin1String("u8")},     {('u'), QLatin1String("u16")},
         {('u'), QLatin1String("u32")},    {('u'), QLatin1String("u64")},
         {('u'), QLatin1String("u128")},   {('u'), QLatin1String("usize")},
         {('f'), QLatin1String("f32")},    {('f'), QLatin1String("f64")},
         {('s'), QLatin1String("str")},    {('c'), QLatin1String("char")},
         {('b'), QLatin1String("bool")},   {('B'), QLatin1String("Box")},
         {('O'), QLatin1String("Option")}, {('R'), QLatin1String("Result")},
         {('S'), QLatin1String("String")}, {('V'), QLatin1String("Vec")}};

  rust_literals
      = {{('f'), QLatin1String("false")}, {('t'), QLatin1String("true")}};

  rust_builtin = {

  };

  rust_other = {{('a'), QLatin1String("assert!")},
                {('a'), QLatin1String("assert_eq!")},
                {('b'), QLatin1String("bitflags!")},
                {('b'), QLatin1String("bytes!")},
                {('c'), QLatin1String("cfg!")},
                {('c'), QLatin1String("col!")},
                {('c'), QLatin1String("concat!")},
                {('c'), QLatin1String("concat_idents!")},
                {('d'), QLatin1String("debug_assert!")},
                {('d'), QLatin1String("debug_assert_eq!")},
                {('e'), QLatin1String("env!")},
                {('p'), QLatin1String("panic!")},
                {('f'), QLatin1String("file!")},
                {('f'), QLatin1String("format!")},
                {('f'), QLatin1String("format_args!")},
                {('i'), QLatin1String("include_bin!")},
                {('i'), QLatin1String("include_str!")},
                {('l'), QLatin1String("line!")},
                {('l'), QLatin1String("local_data_key!")},
                {('m'), QLatin1String("module_path!")},
                {('o'), QLatin1String("option_env!")},
                {('p'), QLatin1String("print!")},
                {('p'), QLatin1String("println!")},
                {('s'), QLatin1String("select!")},
                {('s'), QLatin1String("stringify!")},
                {('t'), QLatin1String("try!")},
                {('u'), QLatin1String("unimplemented!")},
                {('u'), QLatin1String("unreachable!")},
                {('v'), QLatin1String("vec!")},
                {('w'), QLatin1String("write!")},
                {('w'), QLatin1String("writeln!")},
                {('m'), QLatin1String("macro_rules!")},
                {('a'), QLatin1String("assert_ne!")},
                {('d'), QLatin1String("debug_assert_ne!")}};
}
void loadRustData(LanguageData &types, LanguageData &keywords,
                  LanguageData &builtin, LanguageData &literals,
                  LanguageData &other)
{
  if (!rustDataInitialized)
  {
    initRustData();
    rustDataInitialized = true;
  }
  types = rust_types;
  keywords = rust_keywords;
  builtin = rust_builtin;
  literals = rust_literals;
  other = rust_other;
}

/********************************************************/
/***   Java DATA      ***********************************/
/********************************************************/
static bool javaDataInitialized = false;
static LanguageData java_keywords;
static LanguageData java_types;
static LanguageData java_literals;
static LanguageData java_builtin;
static LanguageData java_other;
void initJavaData()
{
  java_keywords = {{('a'), QLatin1String("abstract")},
                   {('a'), QLatin1String("assert")},
                   {('b'), QLatin1String("break")},
                   {('c'), QLatin1String("case")},
                   {('c'), QLatin1String("catch")},
                   {('c'), QLatin1String("const")},
                   {('c'), QLatin1String("continue")},
                   {('d'), QLatin1String("default")},
                   {('d'), QLatin1String("do")},
                   {('e'), QLatin1String("else")},
                   {('e'), QLatin1String("exports")},
                   {('e'), QLatin1String("extends")},
                   {('f'), QLatin1String("final")},
                   {('f'), QLatin1String("finally")},
                   {('f'), QLatin1String("for")},
                   {('g'), QLatin1String("goto")},
                   {('i'), QLatin1String("if")},
                   {('i'), QLatin1String("implements")},
                   {('i'), QLatin1String("import")},
                   {('i'), QLatin1String("instanceof")},
                   {('i'), QLatin1String("interface")},
                   {('l'), QLatin1String("long")},
                   {('m'), QLatin1String("module")},
                   {('n'), QLatin1String("native")},
                   {('n'), QLatin1String("new")},
                   {('n'), QLatin1String("null")},
                   {('o'), QLatin1String("open")},
                   {('o'), QLatin1String("opens")},
                   {('p'), QLatin1String("package")},
                   {('p'), QLatin1String("private")},
                   {('p'), QLatin1String("protected")},
                   {('p'), QLatin1String("provides")},
                   {('p'), QLatin1String("public")},
                   {('r'), QLatin1String("requires")},
                   {('r'), QLatin1String("return")},
                   {('s'), QLatin1String("static")},
                   {('s'), QLatin1String("strictfp")},
                   {('s'), QLatin1String("super")},
                   {('s'), QLatin1String("switch")},
                   {('s'), QLatin1String("synchronized")},
                   {('t'), QLatin1String("this")},
                   {('t'), QLatin1String("throw")},
                   {('t'), QLatin1String("throws")},
                   {('t'), QLatin1String("to")},
                   {('t'), QLatin1String("transient")},
                   {('t'), QLatin1String("transitive")},
                   {('t'), QLatin1String("try")},
                   {('u'), QLatin1String("uses")},
                   {('v'), QLatin1String("var")},
                   {('v'), QLatin1String("volatile")},
                   {('w'), QLatin1String("while")},
                   {('w'), QLatin1String("with")},
                   {('y'), QLatin1String("yield")}};

  java_types = {
      {('v'), QLatin1String("void")},    {('f'), QLatin1String("float")},
      {('b'), QLatin1String("boolean")}, {('b'), QLatin1String("byte")},
      {('i'), QLatin1String("int")},     {('c'), QLatin1String("char")},
      {('c'), QLatin1String("class")},   {('d'), QLatin1String("double")},
      {('e'), QLatin1String("enum")},    {('s'), QLatin1String("short")},

  };

  java_literals
      = {{('f'), QLatin1String("false")}, {('t'), QLatin1String("true")}};

  java_builtin = {

  };

  java_other = {

  };
}
void loadJavaData(LanguageData &types, LanguageData &keywords,
                  LanguageData &builtin, LanguageData &literals,
                  LanguageData &other)
{
  if (!javaDataInitialized)
  {
    initJavaData();
    javaDataInitialized = true;
  }
  types = java_types;
  keywords = java_keywords;
  builtin = java_builtin;
  literals = java_literals;
  other = java_other;
}

/********************************************************/
/***   C# DATA      *************************************/
/********************************************************/
static bool csharpDataInitialized = false;
static LanguageData csharp_keywords;
static LanguageData csharp_types;
static LanguageData csharp_literals;
static LanguageData csharp_builtin;
static LanguageData csharp_other;
void initCSharpData()
{
  csharp_keywords = {{('a'), QLatin1String("abstract")},
                     {('a'), QLatin1String("add")},
                     {('a'), QLatin1String("alias")},
                     {('a'), QLatin1String("as")},
                     {('a'), QLatin1String("ascending")},
                     {('a'), QLatin1String("async")},
                     {('a'), QLatin1String("await")},
                     {('b'), QLatin1String("base")},
                     {('b'), QLatin1String("break")},
                     {('c'), QLatin1String("case")},
                     {('c'), QLatin1String("catch")},
                     {('c'), QLatin1String("checked")},
                     {('c'), QLatin1String("const")},
                     {('c'), QLatin1String("continue")},
                     {('d'), QLatin1String("decimal")},
                     {('d'), QLatin1String("default")},
                     {('d'), QLatin1String("delegate")},
                     {('d'), QLatin1String("descending")},
                     {('d'), QLatin1String("do")},
                     {('d'), QLatin1String("dynamic")},
                     {('e'), QLatin1String("else")},
                     {('e'), QLatin1String("event")},
                     {('e'), QLatin1String("explicit")},
                     {('e'), QLatin1String("extern")},
                     {('f'), QLatin1String("finally")},
                     {('f'), QLatin1String("fixed")},
                     {('f'), QLatin1String("for")},
                     {('f'), QLatin1String("foreach")},
                     {('f'), QLatin1String("from")},
                     {('g'), QLatin1String("get")},
                     {('g'), QLatin1String("global")},
                     {('g'), QLatin1String("goto")},
                     {('g'), QLatin1String("group")},
                     {('i'), QLatin1String("if")},
                     {('i'), QLatin1String("implicit")},
                     {('i'), QLatin1String("in")},
                     {('i'), QLatin1String("interface")},
                     {('i'), QLatin1String("internal")},
                     {('i'), QLatin1String("into")},
                     {('i'), QLatin1String("is")},
                     {('j'), QLatin1String("join")},
                     {('l'), QLatin1String("let")},
                     {('l'), QLatin1String("lock")},
                     {('l'), QLatin1String("long")},
                     {('n'), QLatin1String("namespace")},
                     {('n'), QLatin1String("new")},
                     {('o'), QLatin1String("object")},
                     {('o'), QLatin1String("operator")},
                     {('o'), QLatin1String("orderby")},
                     {('o'), QLatin1String("out")},
                     {('o'), QLatin1String("override")},
                     {('p'), QLatin1String("params")},
                     {('p'), QLatin1String("partial")},
                     {('p'), QLatin1String("private")},
                     {('p'), QLatin1String("protected")},
                     {('p'), QLatin1String("public")},
                     {('r'), QLatin1String("readonly")},
                     {('r'), QLatin1String("ref")},
                     {('r'), QLatin1String("remove")},
                     {('r'), QLatin1String("return")},
                     {('s'), QLatin1String("sealed")},
                     {('s'), QLatin1String("select")},
                     {('s'), QLatin1String("set")},
                     {('s'), QLatin1String("sizeof")},
                     {('s'), QLatin1String("stackalloc")},
                     {('s'), QLatin1String("static")},
                     {('s'), QLatin1String("switch")},
                     {('t'), QLatin1String("this")},
                     {('t'), QLatin1String("throw")},
                     {('t'), QLatin1String("try")},
                     {('t'), QLatin1String("typeof")},
                     {('u'), QLatin1String("unchecked")},
                     {('u'), QLatin1String("unsafe")},
                     {('u'), QLatin1String("using")},
                     {('v'), QLatin1String("value")},
                     {('v'), QLatin1String("virtual")},
                     {('v'), QLatin1String("volatile")},
                     {('w'), QLatin1String("where")},
                     {('w'), QLatin1String("while")},
                     {('y'), QLatin1String("yield")}};

  csharp_types = {
      {('b'), QLatin1String("bool")},   {('b'), QLatin1String("byte")},
      {('c'), QLatin1String("char")},   {('c'), QLatin1String("class")},
      {('d'), QLatin1String("double")}, {('e'), QLatin1String("enum")},
      {('f'), QLatin1String("float")},  {('i'), QLatin1String("int")},
      {('s'), QLatin1String("sbyte")},  {('s'), QLatin1String("short")},
      {('s'), QLatin1String("string")}, {('s'), QLatin1String("struct")},
      {('u'), QLatin1String("uint")},   {('u'), QLatin1String("ulong")},
      {('u'), QLatin1String("ushort")}, {('v'), QLatin1String("var")},
      {('v'), QLatin1String("void")},
  };

  csharp_literals = {{('f'), QLatin1String("false")},
                     {('t'), QLatin1String("true")},
                     {('n'), QLatin1String("null")}};

  csharp_builtin = {

  };

  csharp_other = {
      {('d'), QLatin1String("define")},    {('e'), QLatin1String("elif")},
      {('e'), QLatin1String("else")},      {('e'), QLatin1String("endif")},
      {('e'), QLatin1String("endregion")}, {('e'), QLatin1String("error")},
      {('i'), QLatin1String("if")},        {('l'), QLatin1String("line")},
      {('p'), QLatin1String("pragma")},    {('r'), QLatin1String("region")},
      {('u'), QLatin1String("undef")},     {('w'), QLatin1String("warning")}};
}
void loadCSharpData(LanguageData &types, LanguageData &keywords,
                    LanguageData &builtin, LanguageData &literals,
                    LanguageData &other)
{
  if (!csharpDataInitialized)
  {
    initCSharpData();
    csharpDataInitialized = true;
  }
  types = csharp_types;
  keywords = csharp_keywords;
  builtin = csharp_builtin;
  literals = csharp_literals;
  other = csharp_other;
}

/********************************************************/
/***   Go DATA      *************************************/
/********************************************************/
static bool goDataInitialized = false;
static LanguageData go_keywords;
static LanguageData go_types;
static LanguageData go_literals;
static LanguageData go_builtin;
static LanguageData go_other;
void initGoData()
{
  go_keywords = {
      {('b'), QLatin1String("break")},
      {('c'), QLatin1String("case")},
      {('c'), QLatin1String("chan")},
      {('c'), QLatin1String("const")},
      {('c'), QLatin1String("continue")},
      {('d'), QLatin1String("default")},
      {('d'), QLatin1String("defer")},
      {('e'), QLatin1String("else")},
      {('f'), QLatin1String("fallthrough")},
      {('f'), QLatin1String("for")},
      {('f'), QLatin1String("func")},
      {('g'), QLatin1String("go")},
      {('t'), QLatin1String("to")},
      {('i'), QLatin1String("if")},
      {('i'), QLatin1String("import")},
      {('i'), QLatin1String("interface")},
      {('p'), QLatin1String("package")},
      {('r'), QLatin1String("range")},
      {('r'), QLatin1String("return")},
      {('s'), QLatin1String("select")},
      {('s'), QLatin1String("struct")},
      {('s'), QLatin1String("switch")},
      {('t'), QLatin1String("type")},
  };

  go_types = {
      {('m'), QLatin1String("map")},        {('s'), QLatin1String("struct")},
      {('v'), QLatin1String("var")},        {('b'), QLatin1String("bool")},
      {('b'), QLatin1String("byte")},       {('c'), QLatin1String("complex64")},
      {('c'), QLatin1String("complex128")}, {('f'), QLatin1String("float32")},
      {('f'), QLatin1String("float64")},    {('i'), QLatin1String("int8")},
      {('i'), QLatin1String("int16")},      {('i'), QLatin1String("int32")},
      {('i'), QLatin1String("int64")},      {('s'), QLatin1String("string")},
      {('u'), QLatin1String("uint8")},      {('u'), QLatin1String("uint16")},
      {('u'), QLatin1String("uint32")},     {('u'), QLatin1String("uint64")},
      {('i'), QLatin1String("int")},        {('u'), QLatin1String("uint")},
      {('u'), QLatin1String("uintptr")},    {('r'), QLatin1String("rune")}};

  go_literals = {{('f'), QLatin1String("false")},
                 {('t'), QLatin1String("true")},
                 {('n'), QLatin1String("nil")},
                 {('i'), QLatin1String("iota")}};

  go_builtin
      = {{('a'), QLatin1String("append")}, {('c'), QLatin1String("cap")},
         {('c'), QLatin1String("close")},  {('c'), QLatin1String("complex")},
         {('c'), QLatin1String("copy")},   {('i'), QLatin1String("imag")},
         {('l'), QLatin1String("len")},    {('m'), QLatin1String("make")},
         {('n'), QLatin1String("new")},    {('p'), QLatin1String("panic")},
         {('p'), QLatin1String("print")},  {('p'), QLatin1String("println")},
         {('r'), QLatin1String("real")},   {('r'), QLatin1String("recover")},
         {('d'), QLatin1String("delete")}};

  go_other = {

  };
}
void loadGoData(LanguageData &types, LanguageData &keywords,
                LanguageData &builtin, LanguageData &literals,
                LanguageData &other)
{
  if (!goDataInitialized)
  {
    initGoData();
    goDataInitialized = true;
  }
  types = go_types;
  keywords = go_keywords;
  builtin = go_builtin;
  literals = go_literals;
  other = go_other;
}

/********************************************************/
/***   V DATA      **************************************/
/********************************************************/
static bool vDataInitialized = false;
static LanguageData v_keywords;
static LanguageData v_types;
static LanguageData v_literals;
static LanguageData v_builtin;
static LanguageData v_other;
void initVData()
{
  v_keywords = {
      {('b'), QLatin1String("break")},    {('c'), QLatin1String("const")},
      {('c'), QLatin1String("continue")}, {('d'), QLatin1String("defer")},
      {('e'), QLatin1String("else")},     {('f'), QLatin1String("for")},
      {('f'), QLatin1String("fn")},       {('g'), QLatin1String("go")},
      {('g'), QLatin1String("goto")},     {('i'), QLatin1String("if")},
      {('i'), QLatin1String("import")},   {('i'), QLatin1String("interface")},
      {('r'), QLatin1String("return")},   {('s'), QLatin1String("struct")},
      {('s'), QLatin1String("switch")},   {('t'), QLatin1String("type")},
      {('p'), QLatin1String("pub")},      {('o'), QLatin1String("or")},
      {('n'), QLatin1String("none")}};

  v_types
      = {{('m'), QLatin1String("map")},     {('s'), QLatin1String("struct")},
         {('b'), QLatin1String("bool")},    {('b'), QLatin1String("byte")},
         {('f'), QLatin1String("f32")},     {('f'), QLatin1String("f64")},
         {('i'), QLatin1String("i8")},      {('i'), QLatin1String("i16")},
         {('i'), QLatin1String("int")},     {('i'), QLatin1String("i64")},
         {('i'), QLatin1String("i128")},    {('s'), QLatin1String("string")},
         {('u'), QLatin1String("u16")},     {('u'), QLatin1String("u32")},
         {('u'), QLatin1String("u64")},     {('u'), QLatin1String("u128")},
         {('u'), QLatin1String("byteptr")}, {('u'), QLatin1String("voidptr")},
         {('r'), QLatin1String("rune")}};

  v_literals = {
      {('f'), QLatin1String("false")},
      {('t'), QLatin1String("true")},
  };

  v_builtin = {};

  v_other = {

  };
}
void loadVData(LanguageData &types, LanguageData &keywords,
               LanguageData &builtin, LanguageData &literals,
               LanguageData &other)
{
  if (!vDataInitialized)
  {
    initVData();
    vDataInitialized = true;
  }
  types = v_types;
  keywords = v_keywords;
  builtin = v_builtin;
  literals = v_literals;
  other = v_other;
}

/********************************************************/
/***   SQL DATA      ************************************/
/********************************************************/
static bool sqlDataInitialized = false;
static LanguageData sql_keywords;
static LanguageData sql_types;
static LanguageData sql_literals;
static LanguageData sql_builtin;
static LanguageData sql_other;
void initSQLData()
{
  sql_keywords = {{('A'), QLatin1String("ACTION")},
                  {('A'), QLatin1String("ADD")},
                  {('A'), QLatin1String("AFTER")},
                  {('A'), QLatin1String("ALGORITHM")},
                  {('A'), QLatin1String("ALL")},
                  {('A'), QLatin1String("ALTER")},
                  {('A'), QLatin1String("ANALYZE")},
                  {('A'), QLatin1String("ANY")},
                  {('A'), QLatin1String("APPLY")},
                  {('A'), QLatin1String("AS")},
                  {('A'), QLatin1String("ASC")},
                  {('A'), QLatin1String("AUTHORIZATION")},
                  {('A'), QLatin1String("AUTO_INCREMENT")},
                  {('B'), QLatin1String("BACKUP")},
                  {('B'), QLatin1String("BDB")},
                  {('B'), QLatin1String("BEGIN")},
                  {('B'), QLatin1String("BERKELEYDB")},
                  {('B'), QLatin1String("BIGINT")},
                  {('B'), QLatin1String("BINARY")},
                  {('B'), QLatin1String("BIT")},
                  {('B'), QLatin1String("BLOB")},
                  {('B'), QLatin1String("BOOL")},
                  {('B'), QLatin1String("BOOLEAN")},
                  {('B'), QLatin1String("BREAK")},
                  {('B'), QLatin1String("BROWSE")},
                  {('B'), QLatin1String("BTREE")},
                  {('B'), QLatin1String("BULK")},
                  {('B'), QLatin1String("BY")},
                  {('C'), QLatin1String("CALL")},
                  {('C'), QLatin1String("CASCADED")},
                  {('C'), QLatin1String("CASE")},
                  {('C'), QLatin1String("CHAIN")},
                  {('C'), QLatin1String("CHARACTER")},
                  {('S'), QLatin1String("SET")},
                  {('C'), QLatin1String("CHECKPOINT")},
                  {('C'), QLatin1String("CLOSE")},
                  {('C'), QLatin1String("CLUSTERED")},
                  {('C'), QLatin1String("COALESCE")},
                  {('C'), QLatin1String("COLLATE")},
                  {('C'), QLatin1String("COLUMNS")},
                  {('C'), QLatin1String("COMMENT")},
                  {('C'), QLatin1String("COMMITTED")},
                  {('C'), QLatin1String("COMPUTE")},
                  {('C'), QLatin1String("CONNECT")},
                  {('C'), QLatin1String("CONSISTENT")},
                  {('C'), QLatin1String("CONSTRAINT")},
                  {('C'), QLatin1String("CONTAINSTABLE")},
                  {('C'), QLatin1String("CONTINUE")},
                  {('C'), QLatin1String("CONVERT")},
                  {('C'), QLatin1String("CREATE")},
                  {('C'), QLatin1String("CROSS")},
                  {('C'), QLatin1String("CURRENT_DATE")},
                  {('_'), QLatin1String("_TIME")},
                  {('_'), QLatin1String("_TIMESTAMP")},
                  {('_'), QLatin1String("_USER")},
                  {('C'), QLatin1String("CURSOR")},
                  {('C'), QLatin1String("CYCLE")},
                  {('D'), QLatin1String("DATABASES")},
                  {('D'), QLatin1String("DATETIME")},
                  {('D'), QLatin1String("DAY")},
                  {('D'), QLatin1String("DBCC")},
                  {('D'), QLatin1String("DEALLOCATE")},
                  {('D'), QLatin1String("DEC")},
                  {('D'), QLatin1String("DECIMAL")},
                  {('D'), QLatin1String("DECLARE")},
                  {('D'), QLatin1String("DEFAULT")},
                  {('D'), QLatin1String("DEFINER")},
                  {('D'), QLatin1String("DELAYED")},
                  {('D'), QLatin1String("DELETE")},
                  {('D'), QLatin1String("DELIMITERS")},
                  {('D'), QLatin1String("DENY")},
                  {('D'), QLatin1String("DESC")},
                  {('D'), QLatin1String("DESCRIBE")},
                  {('D'), QLatin1String("DETERMINISTIC")},
                  {('D'), QLatin1String("DISABLE")},
                  {('D'), QLatin1String("DISCARD")},
                  {('D'), QLatin1String("DISK")},
                  {('D'), QLatin1String("DISTINCT")},
                  {('D'), QLatin1String("DISTINCTROW")},
                  {('D'), QLatin1String("DISTRIBUTED")},
                  {('D'), QLatin1String("DO")},
                  {('D'), QLatin1String("DOUBLE")},
                  {('D'), QLatin1String("DROP")},
                  {('D'), QLatin1String("DUMMY")},
                  {('D'), QLatin1String("DUMPFILE")},
                  {('D'), QLatin1String("DUPLICATE")},
                  {('E'), QLatin1String("ELSEIF")},
                  {('E'), QLatin1String("ENABLE")},
                  {('E'), QLatin1String("ENCLOSED")},
                  {('E'), QLatin1String("END")},
                  {('E'), QLatin1String("ENGINE")},
                  {('E'), QLatin1String("ENUM")},
                  {('E'), QLatin1String("ERRLVL")},
                  {('E'), QLatin1String("ERRORS")},
                  {('E'), QLatin1String("ESCAPED")},
                  {('E'), QLatin1String("EXCEPT")},
                  {('E'), QLatin1String("EXECUTE")},
                  {('E'), QLatin1String("EXISTS")},
                  {('E'), QLatin1String("EXIT")},
                  {('E'), QLatin1String("EXPLAIN")},
                  {('E'), QLatin1String("EXTENDED")},
                  {('F'), QLatin1String("FETCH")},
                  {('F'), QLatin1String("FIELDS")},
                  {('F'), QLatin1String("FILE")},
                  {('F'), QLatin1String("FILLFACTOR")},
                  {('F'), QLatin1String("FIRST")},
                  {('F'), QLatin1String("FIXED")},
                  {('F'), QLatin1String("FLOAT")},
                  {('F'), QLatin1String("FOLLOWING")},
                  {('F'), QLatin1String("FOR")},
                  {('E'), QLatin1String("EACH")},
                  {('R'), QLatin1String("ROW")},
                  {('F'), QLatin1String("FORCE")},
                  {('F'), QLatin1String("FOREIGN")},
                  {('F'), QLatin1String("FREETEXTTABLE")},
                  {('F'), QLatin1String("FROM")},
                  {('F'), QLatin1String("FULL")},
                  {('F'), QLatin1String("FUNCTION")},
                  {('G'), QLatin1String("GEOMETRYCOLLECTION")},
                  {('G'), QLatin1String("GLOBAL")},
                  {('G'), QLatin1String("GOTO")},
                  {('G'), QLatin1String("GRANT")},
                  {('G'), QLatin1String("GROUP")},
                  {('H'), QLatin1String("HANDLER")},
                  {('H'), QLatin1String("HASH")},
                  {('H'), QLatin1String("HAVING")},
                  {('H'), QLatin1String("HOLDLOCK")},
                  {('H'), QLatin1String("HOUR")},
                  {('I'), QLatin1String("IDENTITY_INSERT")},
                  {('C'), QLatin1String("COL")},
                  {('I'), QLatin1String("IF")},
                  {('I'), QLatin1String("IGNORE")},
                  {('I'), QLatin1String("IMPORT")},
                  {('I'), QLatin1String("INDEX")},
                  {('I'), QLatin1String("INFILE")},
                  {('I'), QLatin1String("INNER")},
                  {('I'), QLatin1String("INNODB")},
                  {('I'), QLatin1String("INOUT")},
                  {('I'), QLatin1String("INSERT")},
                  {('I'), QLatin1String("INT")},
                  {('I'), QLatin1String("INTEGER")},
                  {('I'), QLatin1String("INTERSECT")},
                  {('I'), QLatin1String("INTERVAL")},
                  {('I'), QLatin1String("INTO")},
                  {('I'), QLatin1String("INVOKER")},
                  {('I'), QLatin1String("ISOLATION")},
                  {('I'), QLatin1String("ITERATE")},
                  {('J'), QLatin1String("JOIN")},
                  {('K'), QLatin1String("KEYS")},
                  {('K'), QLatin1String("KILL")},
                  {('L'), QLatin1String("LANGUAGE")},
                  {('L'), QLatin1String("LAST")},
                  {('L'), QLatin1String("LEAVE")},
                  {('L'), QLatin1String("LEFT")},
                  {('L'), QLatin1String("LEVEL")},
                  {('L'), QLatin1String("LIMIT")},
                  {('L'), QLatin1String("LINENO")},
                  {('L'), QLatin1String("LINES")},
                  {('L'), QLatin1String("LINESTRING")},
                  {('L'), QLatin1String("LOAD")},
                  {('L'), QLatin1String("LOCAL")},
                  {('L'), QLatin1String("LOCK")},
                  {('L'), QLatin1String("LONGBLOB")},
                  {('T'), QLatin1String("TEXT")},
                  {('L'), QLatin1String("LOOP")},
                  {('M'), QLatin1String("MATCHED")},
                  {('M'), QLatin1String("MEDIUMBLOB")},
                  {('I'), QLatin1String("INT")},
                  {('T'), QLatin1String("TEXT")},
                  {('M'), QLatin1String("MERGE")},
                  {('M'), QLatin1String("MIDDLEINT")},
                  {('M'), QLatin1String("MINUTE")},
                  {('M'), QLatin1String("MODE")},
                  {('M'), QLatin1String("MODIFIES")},
                  {('M'), QLatin1String("MODIFY")},
                  {('M'), QLatin1String("MONTH")},
                  {('M'), QLatin1String("MULTILINESTRING")},
                  {('P'), QLatin1String("POINT")},
                  {('P'), QLatin1String("POLYGON")},
                  {('N'), QLatin1String("NATIONAL")},
                  {('N'), QLatin1String("NATURAL")},
                  {('N'), QLatin1String("NCHAR")},
                  {('N'), QLatin1String("NEXT")},
                  {('N'), QLatin1String("NO")},
                  {('N'), QLatin1String("NONCLUSTERED")},
                  {('N'), QLatin1String("NULLIF")},
                  {('N'), QLatin1String("NUMERIC")},
                  {('O'), QLatin1String("OFF")},
                  {('O'), QLatin1String("OFFSETS")},
                  {('O'), QLatin1String("ON")},
                  {('O'), QLatin1String("OPENDATASOURCE")},
                  {('Q'), QLatin1String("QUERY")},
                  {('R'), QLatin1String("ROWSET")},
                  {('O'), QLatin1String("OPTIMIZE")},
                  {('O'), QLatin1String("OPTIONALLY")},
                  {('O'), QLatin1String("ORDER")},
                  {('O'), QLatin1String("OUTER")},
                  {('F'), QLatin1String("FILE")},
                  {('O'), QLatin1String("OVER")},
                  {('P'), QLatin1String("PARTIAL")},
                  {('P'), QLatin1String("PARTITION")},
                  {('P'), QLatin1String("PERCENT")},
                  {('P'), QLatin1String("PIVOT")},
                  {('P'), QLatin1String("PLAN")},
                  {('P'), QLatin1String("POINT")},
                  {('P'), QLatin1String("POLYGON")},
                  {('P'), QLatin1String("PRECEDING")},
                  {('P'), QLatin1String("PRECISION")},
                  {('P'), QLatin1String("PREPARE")},
                  {('P'), QLatin1String("PREV")},
                  {('P'), QLatin1String("PRIMARY")},
                  {('P'), QLatin1String("PRINT")},
                  {('P'), QLatin1String("PRIVILEGES")},
                  {('P'), QLatin1String("PROCEDURE")},
                  {('P'), QLatin1String("PUBLIC")},
                  {('P'), QLatin1String("PURGE")},
                  {('Q'), QLatin1String("QUICK")},
                  {('R'), QLatin1String("RAISERROR")},
                  {('R'), QLatin1String("READS")},
                  {('R'), QLatin1String("REAL")},
                  {('R'), QLatin1String("RECONFIGURE")},
                  {('R'), QLatin1String("REFERENCES")},
                  {('R'), QLatin1String("RELEASE")},
                  {('R'), QLatin1String("RENAME")},
                  {('R'), QLatin1String("REPEATABLE")},
                  {('R'), QLatin1String("REPLACE")},
                  {('R'), QLatin1String("REPLICATION")},
                  {('R'), QLatin1String("REQUIRE")},
                  {('R'), QLatin1String("RESIGNAL")},
                  {('R'), QLatin1String("RESTORE")},
                  {('R'), QLatin1String("RESTRICT")},
                  {('R'), QLatin1String("RETURNS")},
                  {('R'), QLatin1String("REVOKE")},
                  {('R'), QLatin1String("RIGHT")},
                  {('R'), QLatin1String("ROLLBACK")},
                  {('R'), QLatin1String("ROUTINE")},
                  {('R'), QLatin1String("ROWCOUNT")},
                  {('G'), QLatin1String("GUIDCOL")},
                  {('R'), QLatin1String("RTREE")},
                  {('R'), QLatin1String("RULE")},
                  {('S'), QLatin1String("SAVEPOINT")},
                  {('S'), QLatin1String("SCHEMA")},
                  {('S'), QLatin1String("SECOND")},
                  {('S'), QLatin1String("SELECT")},
                  {('S'), QLatin1String("SERIALIZABLE")},
                  {('S'), QLatin1String("SESSION_USER")},
                  {('S'), QLatin1String("SETUSER")},
                  {('S'), QLatin1String("SHARE")},
                  {('S'), QLatin1String("SHOW")},
                  {('S'), QLatin1String("SHUTDOWN")},
                  {('S'), QLatin1String("SIMPLE")},
                  {('S'), QLatin1String("SMALLINT")},
                  {('S'), QLatin1String("SNAPSHOT")},
                  {('S'), QLatin1String("SOME")},
                  {('S'), QLatin1String("SONAME")},
                  {('S'), QLatin1String("SQL")},
                  {('S'), QLatin1String("STARTING")},
                  {('S'), QLatin1String("STATISTICS")},
                  {('S'), QLatin1String("STATUS")},
                  {('S'), QLatin1String("STRIPED")},
                  {('S'), QLatin1String("SYSTEM_USER")},
                  {('T'), QLatin1String("TABLES")},
                  {('T'), QLatin1String("TABLESPACE")},
                  {('T'), QLatin1String("TEMPORARY")},
                  {('T'), QLatin1String("TABLE")},
                  {('T'), QLatin1String("TERMINATED")},
                  {('T'), QLatin1String("TEXTSIZE")},
                  {('T'), QLatin1String("THEN")},
                  {('T'), QLatin1String("TIMESTAMP")},
                  {('T'), QLatin1String("TINYBLOB")},
                  {('I'), QLatin1String("INT")},
                  {('T'), QLatin1String("TEXT")},
                  {('T'), QLatin1String("TOP")},
                  {('T'), QLatin1String("TRANSACTIONS")},
                  {('T'), QLatin1String("TRIGGER")},
                  {('T'), QLatin1String("TRUNCATE")},
                  {('T'), QLatin1String("TSEQUAL")},
                  {('T'), QLatin1String("TYPES")},
                  {('U'), QLatin1String("UNBOUNDED")},
                  {('U'), QLatin1String("UNCOMMITTED")},
                  {('U'), QLatin1String("UNDEFINED")},
                  {('U'), QLatin1String("UNION")},
                  {('U'), QLatin1String("UNIQUE")},
                  {('U'), QLatin1String("UNLOCK")},
                  {('U'), QLatin1String("UNPIVOT")},
                  {('U'), QLatin1String("UNSIGNED")},
                  {('U'), QLatin1String("UPDATETEXT")},
                  {('U'), QLatin1String("USAGE")},
                  {('U'), QLatin1String("USE")},
                  {('U'), QLatin1String("USER")},
                  {('U'), QLatin1String("USING")},
                  {('V'), QLatin1String("VALUES")},
                  {('V'), QLatin1String("VARBINARY")},
                  {('C'), QLatin1String("CHAR")},
                  {('C'), QLatin1String("CHARACTER")},
                  {('Y'), QLatin1String("YING")},
                  {('V'), QLatin1String("VIEW")},
                  {('W'), QLatin1String("WAITFOR")},
                  {('W'), QLatin1String("WARNINGS")},
                  {('W'), QLatin1String("WHEN")},
                  {('W'), QLatin1String("WHERE")},
                  {('W'), QLatin1String("WHILE")},
                  {('W'), QLatin1String("WITH")},
                  {('R'), QLatin1String("ROLLUP")},
                  {('I'), QLatin1String("IN")},
                  {('W'), QLatin1String("WORK")},
                  {('W'), QLatin1String("WRITETEXT")},
                  {('Y'), QLatin1String("YEAR")}};

  sql_types = {

  };

  sql_literals = {
      {('A'), QLatin1String("TRUE")},
      {('F'), QLatin1String("FALSE")},
      {('N'), QLatin1String("NULL")},
  };

  sql_builtin
      = {{('A'), QLatin1String("AVG")},   {('C'), QLatin1String("COUNT")},
         {('F'), QLatin1String("FIRST")}, {('F'), QLatin1String("FORMAT")},
         {('L'), QLatin1String("LAST")},  {('L'), QLatin1String("LCASE")},
         {('L'), QLatin1String("LEN")},   {('M'), QLatin1String("MAX")},
         {('M'), QLatin1String("MID")},   {('M'), QLatin1String("MIN")},
         {('M'), QLatin1String("MOD")},   {('N'), QLatin1String("NOW")},
         {('R'), QLatin1String("ROUND")}, {('S'), QLatin1String("SUM")},
         {('U'), QLatin1String("UCASE")}};

  sql_other = {

  };
}
void loadSQLData(LanguageData &types, LanguageData &keywords,
                 LanguageData &builtin, LanguageData &literals,
                 LanguageData &other)
{
  if (!sqlDataInitialized)
  {
    initSQLData();
    sqlDataInitialized = true;
  }
  types = sql_types;
  keywords = sql_keywords;
  builtin = sql_builtin;
  literals = sql_literals;
  other = sql_other;
}

/********************************************************/
/***   JSON DATA      ***********************************/
/********************************************************/
static bool jsonDataInitialized = false;
static LanguageData json_keywords;
static LanguageData json_types;
static LanguageData json_literals;
static LanguageData json_builtin;
static LanguageData json_other;
void initJSONData()
{
  json_keywords = {};

  json_types = {};

  json_literals = {{('f'), QLatin1String("false")},
                   {('t'), QLatin1String("true")},
                   {('n'), QLatin1String("null")}};

  json_builtin = {};

  json_other = {};
}
void loadJSONData(LanguageData &types, LanguageData &keywords,
                  LanguageData &builtin, LanguageData &literals,
                  LanguageData &other)
{
  if (!jsonDataInitialized)
  {
    initJSONData();
    jsonDataInitialized = true;
  }
  types = json_types;
  keywords = json_keywords;
  builtin = json_builtin;
  literals = json_literals;
  other = json_other;
}

/********************************************************/
/***   CSS DATA      ***********************************/
/********************************************************/
static bool cssDataInitialized = false;
static LanguageData css_keywords;
static LanguageData css_types;
static LanguageData css_literals;
static LanguageData css_builtin;
static LanguageData css_other;
void initCSSData()
{
  css_keywords = {{'i', QLatin1String("important")},
                  {'p', QLatin1String("px")},
                  {'e', QLatin1String("em")}};

  css_types = {
      {'a', QLatin1String("align")},       {'c', QLatin1String("content")},
      {'i', QLatin1String("items")},       {'s', QLatin1String("self")},
      {'a', QLatin1String("all")},         {'a', QLatin1String("animation")},
      {'d', QLatin1String("delay")},       {'d', QLatin1String("direction")},
      {'d', QLatin1String("duration")},    {'f', QLatin1String("fill")},
      {'m', QLatin1String("mode")},        {'i', QLatin1String("iteration")},
      {'c', QLatin1String("count")},       {'n', QLatin1String("name")},
      {'p', QLatin1String("play")},        {'s', QLatin1String("state")},
      {'t', QLatin1String("timing")},      {'f', QLatin1String("function")},
      {'a', QLatin1String("azimuth")},     {'b', QLatin1String("backface")},
      {'v', QLatin1String("visibility")},  {'a', QLatin1String("attachment")},
      {'b', QLatin1String("blend")},       {'m', QLatin1String("mode")},
      {'c', QLatin1String("clip")},        {'c', QLatin1String("color")},
      {'i', QLatin1String("image")},       {'o', QLatin1String("origin")},
      {'p', QLatin1String("position")},    {'r', QLatin1String("repeat")},
      {'s', QLatin1String("size")},        {'b', QLatin1String("background")},
      {'b', QLatin1String("bleed")},       {'c', QLatin1String("color")},
      {'r', QLatin1String("radius")},      {'r', QLatin1String("radius")},
      {'s', QLatin1String("style")},       {'w', QLatin1String("width")},
      {'b', QLatin1String("bottom")},      {'c', QLatin1String("collapse")},
      {'c', QLatin1String("color")},       {'i', QLatin1String("image")},
      {'o', QLatin1String("outset")},      {'r', QLatin1String("repeat")},
      {'s', QLatin1String("source")},      {'s', QLatin1String("slice")},
      {'w', QLatin1String("width")},       {'c', QLatin1String("color")},
      {'s', QLatin1String("style")},       {'w', QLatin1String("width")},
      {'l', QLatin1String("left")},        {'r', QLatin1String("radius")},
      {'c', QLatin1String("color")},       {'s', QLatin1String("style")},
      {'w', QLatin1String("width")},       {'r', QLatin1String("right")},
      {'s', QLatin1String("spacing")},     {'s', QLatin1String("style")},
      {'c', QLatin1String("color")},       {'l', QLatin1String("left")},
      {'r', QLatin1String("radius")},      {'r', QLatin1String("radius")},
      {'s', QLatin1String("style")},       {'w', QLatin1String("width")},
      {'t', QLatin1String("top")},         {'w', QLatin1String("width")},
      {'b', QLatin1String("border")},      {'b', QLatin1String("bottom")},
      {'b', QLatin1String("break")},       {'b', QLatin1String("box")},
      {'s', QLatin1String("shadow")},      {'b', QLatin1String("box")},
      {'s', QLatin1String("sizing")},      {'a', QLatin1String("after")},
      {'b', QLatin1String("before")},      {'b', QLatin1String("break")},
      {'i', QLatin1String("inside")},      {'c', QLatin1String("caption")},
      {'s', QLatin1String("side")},        {'c', QLatin1String("caret")},
      {'c', QLatin1String("color")},       {'c', QLatin1String("clear")},
      {'c', QLatin1String("clip")},        {'c', QLatin1String("color")},
      {'c', QLatin1String("columns")},     {'c', QLatin1String("column")},
      {'c', QLatin1String("count")},       {'f', QLatin1String("fill")},
      {'g', QLatin1String("gap")},         {'r', QLatin1String("rule")},
      {'c', QLatin1String("color")},       {'s', QLatin1String("style")},
      {'w', QLatin1String("width")},       {'s', QLatin1String("span")},
      {'w', QLatin1String("width")},       {'c', QLatin1String("content")},
      {'i', QLatin1String("increment")},   {'c', QLatin1String("counter")},
      {'r', QLatin1String("reset")},       {'a', QLatin1String("after")},
      {'b', QLatin1String("before")},      {'c', QLatin1String("cue")},
      {'c', QLatin1String("cursor")},      {'d', QLatin1String("direction")},
      {'d', QLatin1String("display")},     {'e', QLatin1String("elevation")},
      {'e', QLatin1String("empty")},       {'c', QLatin1String("cells")},
      {'f', QLatin1String("filter")},      {'f', QLatin1String("flex")},
      {'b', QLatin1String("basis")},       {'d', QLatin1String("direction")},
      {'f', QLatin1String("feature")},     {'s', QLatin1String("settings")},
      {'f', QLatin1String("flex")},        {'f', QLatin1String("flow")},
      {'g', QLatin1String("grow")},        {'s', QLatin1String("shrink")},
      {'w', QLatin1String("wrap")},        {'f', QLatin1String("float")},
      {'f', QLatin1String("family")},      {'k', QLatin1String("kerning")},
      {'l', QLatin1String("language")},    {'o', QLatin1String("override")},
      {'a', QLatin1String("adjust")},      {'s', QLatin1String("size")},
      {'s', QLatin1String("stretch")},     {'s', QLatin1String("style")},
      {'s', QLatin1String("synthesis")},   {'v', QLatin1String("variant")},
      {'a', QLatin1String("alternates")},  {'c', QLatin1String("caps")},
      {'e', QLatin1String("east")},        {'a', QLatin1String("asian")},
      {'l', QLatin1String("ligatures")},   {'n', QLatin1String("numeric")},
      {'p', QLatin1String("position")},    {'w', QLatin1String("weight")},
      {'f', QLatin1String("font")},        {'a', QLatin1String("area")},
      {'a', QLatin1String("auto")},        {'c', QLatin1String("columns")},
      {'f', QLatin1String("flow")},        {'r', QLatin1String("rows")},
      {'e', QLatin1String("end")},         {'g', QLatin1String("gap")},
      {'s', QLatin1String("start")},       {'c', QLatin1String("column")},
      {'g', QLatin1String("gap")},         {'e', QLatin1String("end")},
      {'g', QLatin1String("gap")},         {'s', QLatin1String("start")},
      {'r', QLatin1String("row")},         {'a', QLatin1String("areas")},
      {'c', QLatin1String("columns")},     {'r', QLatin1String("rows")},
      {'t', QLatin1String("template")},    {'g', QLatin1String("grid")},
      {'h', QLatin1String("hanging")},     {'p', QLatin1String("punctuation")},
      {'h', QLatin1String("height")},      {'h', QLatin1String("hyphens")},
      {'i', QLatin1String("isolation")},   {'j', QLatin1String("justify")},
      {'c', QLatin1String("content")},     {'i', QLatin1String("items")},
      {'s', QLatin1String("self")},        {'l', QLatin1String("leftimage")},
      {'l', QLatin1String("letter")},      {'s', QLatin1String("spacing")},
      {'b', QLatin1String("break")},       {'l', QLatin1String("line")},
      {'s', QLatin1String("style")},       {'i', QLatin1String("image")},
      {'s', QLatin1String("style")},       {'p', QLatin1String("position")},
      {'t', QLatin1String("type")},        {'l', QLatin1String("list")},
      {'s', QLatin1String("style")},       {'b', QLatin1String("bottom")},
      {'l', QLatin1String("left")},        {'r', QLatin1String("right")},
      {'t', QLatin1String("top")},         {'m', QLatin1String("margin")},
      {'m', QLatin1String("marker")},      {'o', QLatin1String("offset")},
      {'m', QLatin1String("marks")},       {'m', QLatin1String("max")},
      {'h', QLatin1String("height")},      {'w', QLatin1String("width")},
      {'m', QLatin1String("min")},         {'m', QLatin1String("mix")},
      {'b', QLatin1String("blend")},       {'m', QLatin1String("mode")},
      {'n', QLatin1String("nav")},         {'u', QLatin1String("up")},
      {'d', QLatin1String("down")},        {'l', QLatin1String("left")},
      {'r', QLatin1String("right")},       {'o', QLatin1String("opacity")},
      {'o', QLatin1String("order")},       {'o', QLatin1String("orphans")},
      {'c', QLatin1String("color")},       {'o', QLatin1String("offset")},
      {'s', QLatin1String("style")},       {'w', QLatin1String("width")},
      {'o', QLatin1String("outline")},     {'w', QLatin1String("wrap")},
      {'o', QLatin1String("overflow")},    {'b', QLatin1String("bottom")},
      {'l', QLatin1String("left")},        {'r', QLatin1String("right")},
      {'t', QLatin1String("top")},         {'p', QLatin1String("padding")},
      {'b', QLatin1String("break")},       {'a', QLatin1String("after")},
      {'b', QLatin1String("before")},      {'i', QLatin1String("inside")},
      {'p', QLatin1String("page")},        {'a', QLatin1String("after")},
      {'b', QLatin1String("before")},      {'p', QLatin1String("pause")},
      {'p', QLatin1String("perspective")}, {'o', QLatin1String("origin")},
      {'r', QLatin1String("range")},       {'p', QLatin1String("pitch")},
      {'c', QLatin1String("content")},     {'i', QLatin1String("items")},
      {'p', QLatin1String("place")},       {'s', QLatin1String("self")},
      {'p', QLatin1String("play")},        {'d', QLatin1String("during")},
      {'p', QLatin1String("position")},    {'q', QLatin1String("quotes")},
      {'r', QLatin1String("resize")},      {'r', QLatin1String("rest")},
      {'a', QLatin1String("after")},       {'b', QLatin1String("before")},
      {'r', QLatin1String("rest")},        {'r', QLatin1String("richness")},
      {'r', QLatin1String("right")},       {'s', QLatin1String("size")},
      {'h', QLatin1String("header")},      {'n', QLatin1String("numeral")},
      {'s', QLatin1String("speak")},       {'p', QLatin1String("punctuation")},
      {'s', QLatin1String("speak")},       {'s', QLatin1String("speech")},
      {'r', QLatin1String("rate")},        {'s', QLatin1String("stress")},
      {'t', QLatin1String("tab")},         {'s', QLatin1String("size")},
      {'t', QLatin1String("table")},       {'l', QLatin1String("layout")},
      {'t', QLatin1String("text")},        {'a', QLatin1String("align")},
      {'l', QLatin1String("last")},        {'d', QLatin1String("decoration")},
      {'c', QLatin1String("color")},       {'l', QLatin1String("line")},
      {'s', QLatin1String("skip")},        {'s', QLatin1String("style")},
      {'i', QLatin1String("indent")},      {'o', QLatin1String("overflow")},
      {'s', QLatin1String("shadow")},      {'t', QLatin1String("transform")},
      {'u', QLatin1String("underline")},   {'p', QLatin1String("position")},
      {'t', QLatin1String("top")},         {'t', QLatin1String("transform")},
      {'o', QLatin1String("origin")},      {'s', QLatin1String("style")},
      {'t', QLatin1String("transition")},  {'d', QLatin1String("delay")},
      {'d', QLatin1String("duration")},    {'p', QLatin1String("property")},
      {'t', QLatin1String("timing")},      {'f', QLatin1String("function")},
      {'u', QLatin1String("unicode")},     {'b', QLatin1String("bidi")},
      {'v', QLatin1String("vertical")},    {'a', QLatin1String("align")},
      {'v', QLatin1String("visibility")},  {'b', QLatin1String("balance")},
      {'d', QLatin1String("duration")},    {'f', QLatin1String("family")},
      {'p', QLatin1String("pitch")},       {'r', QLatin1String("range")},
      {'r', QLatin1String("rate")},        {'s', QLatin1String("stress")},
      {'v', QLatin1String("volume")},      {'v', QLatin1String("voice")},
      {'v', QLatin1String("volume")},      {'w', QLatin1String("white")},
      {'s', QLatin1String("space")},       {'w', QLatin1String("widows")},
      {'w', QLatin1String("width")},       {'w', QLatin1String("will")},
      {'c', QLatin1String("change")},      {'w', QLatin1String("word")},
      {'b', QLatin1String("break")},       {'s', QLatin1String("spacing")},
      {'w', QLatin1String("wrap")},        {'x', QLatin1String("x")},
      {'y', QLatin1String("y")},           {'z', QLatin1String("z")},
      {'i', QLatin1String("index")},       {'r', QLatin1String("rgb")},
      {'s', QLatin1String("sans")},        {'s', QLatin1String("serif")},
      {'n', QLatin1String("normal")}};

  css_literals = {};

  css_builtin = {};

  css_other = {};
}
void loadCSSData(LanguageData &types, LanguageData &keywords,
                 LanguageData &builtin, LanguageData &literals,
                 LanguageData &other)
{
  if (!cssDataInitialized)
  {
    initCSSData();
    cssDataInitialized = true;
  }
  types = css_types;
  keywords = css_keywords;
  builtin = css_builtin;
  literals = css_literals;
  other = css_other;
}

/********************************************************/
/***   Typescript DATA  *********************************/
/********************************************************/
static bool typescriptDataInitialized = false;
static LanguageData typescript_keywords;
static LanguageData typescript_types;
static LanguageData typescript_literals;
static LanguageData typescript_builtin;
static LanguageData typescript_other;
void initTypescriptData()
{
  typescript_keywords
      = {{'i', QLatin1String("in")},         {'i', QLatin1String("if")},
         {'f', QLatin1String("for")},        {'w', QLatin1String("while")},
         {'f', QLatin1String("finally")},    {'n', QLatin1String("new")},
         {'f', QLatin1String("function")},   {'d', QLatin1String("do")},
         {'r', QLatin1String("return")},     {'v', QLatin1String("void")},
         {'e', QLatin1String("else")},       {'b', QLatin1String("break")},
         {'c', QLatin1String("catch")},      {'i', QLatin1String("instanceof")},
         {'w', QLatin1String("with")},       {'t', QLatin1String("throw")},
         {'c', QLatin1String("case")},       {'d', QLatin1String("default")},
         {'t', QLatin1String("try")},        {'t', QLatin1String("this")},
         {'s', QLatin1String("switch")},     {'c', QLatin1String("continue")},
         {'t', QLatin1String("typeof")},     {'d', QLatin1String("delete")},
         {'l', QLatin1String("let")},        {'y', QLatin1String("yield")},
         {'c', QLatin1String("const")},      {'p', QLatin1String("public")},
         {'p', QLatin1String("private")},    {'p', QLatin1String("protected")},
         {'g', QLatin1String("get")},        {'s', QLatin1String("set")},
         {'s', QLatin1String("super")},      {'s', QLatin1String("static")},
         {'i', QLatin1String("implements")}, {'e', QLatin1String("export")},
         {'i', QLatin1String("import")},     {'d', QLatin1String("declare")},
         {'t', QLatin1String("type")},       {'n', QLatin1String("namespace")},
         {'a', QLatin1String("abstract")},   {'a', QLatin1String("as")},
         {'f', QLatin1String("from")},       {'e', QLatin1String("extends")},
         {'a', QLatin1String("async")},      {'a', QLatin1String("await")}};

  typescript_types = {{'v', QLatin1String("var")},
                      {'c', QLatin1String("class")},
                      {'e', QLatin1String("enum")}};

  typescript_literals
      = {{('f'), QLatin1String("false")}, {('n'), QLatin1String("null")},
         {('t'), QLatin1String("true")},  {('u'), QLatin1String("undefined")},
         {('N'), QLatin1String("NaN")},   {('I'), QLatin1String("Infinity")}};

  typescript_builtin = {{'e', QLatin1String("eval")},
                        {'i', QLatin1String("isFinite")},
                        {'i', QLatin1String("isNaN")},
                        {'p', QLatin1String("parseFloat")},
                        {'p', QLatin1String("parseInt")},
                        {'d', QLatin1String("decodeURI")},
                        {'d', QLatin1String("decodeURIComponent")},
                        {'e', QLatin1String("encodeURI")},
                        {'e', QLatin1String("encodeURIComponent")},
                        {'e', QLatin1String("escape")},
                        {'u', QLatin1String("unescape")},
                        {'O', QLatin1String("Object")},
                        {'F', QLatin1String("Function")},
                        {'B', QLatin1String("Boolean")},
                        {'E', QLatin1String("Error")},
                        {'E', QLatin1String("EvalError")},
                        {'I', QLatin1String("InternalError")},
                        {'R', QLatin1String("RangeError")},
                        {'R', QLatin1String("ReferenceError")},
                        {'S', QLatin1String("StopIteration")},
                        {'S', QLatin1String("SyntaxError")},
                        {'T', QLatin1String("TypeError")},
                        {'U', QLatin1String("URIError")},
                        {'N', QLatin1String("Number")},
                        {'M', QLatin1String("Math")},
                        {'D', QLatin1String("Date")},
                        {'S', QLatin1String("String")},
                        {'R', QLatin1String("RegExp")},
                        {'A', QLatin1String("Array")},
                        {'F', QLatin1String("Float32Array")},
                        {'F', QLatin1String("Float64Array")},
                        {'I', QLatin1String("Int16Array")},
                        {'I', QLatin1String("Int32Array")},
                        {'I', QLatin1String("Int8Array")},
                        {'U', QLatin1String("Uint16Array")},
                        {'U', QLatin1String("Uint32Array")},
                        {'U', QLatin1String("Uint8Array")},
                        {'U', QLatin1String("Uint8ClampedArray")},
                        {'A', QLatin1String("ArrayBuffer")},
                        {'D', QLatin1String("DataView")},
                        {'J', QLatin1String("JSON")},
                        {'I', QLatin1String("Intl")},
                        {'a', QLatin1String("arguments")},
                        {'r', QLatin1String("require")},
                        {'m', QLatin1String("module")},
                        {'c', QLatin1String("console")},
                        {'w', QLatin1String("window")},
                        {'d', QLatin1String("document")},
                        {'a', QLatin1String("any")},
                        {'n', QLatin1String("number")},
                        {'b', QLatin1String("boolean")},
                        {'s', QLatin1String("string")},
                        {'v', QLatin1String("void")},
                        {'P', QLatin1String("Promise")}};

  typescript_other = {};
}
void loadTypescriptData(LanguageData &types, LanguageData &keywords,
                        LanguageData &builtin, LanguageData &literals,
                        LanguageData &other)
{
  if (!typescriptDataInitialized)
  {
    initTypescriptData();
    typescriptDataInitialized = true;
  }
  types = typescript_types;
  keywords = typescript_keywords;
  builtin = typescript_builtin;
  literals = typescript_literals;
  other = typescript_other;
}

/********************************************************/
/***   YAML DATA  ***************************************/
/********************************************************/
static bool YAMLDataInitialized = false;
static LanguageData YAML_keywords;
static LanguageData YAML_types;
static LanguageData YAML_literals;
static LanguageData YAML_builtin;
static LanguageData YAML_other;
void initYAMLData()
{
  YAML_keywords = {};
  YAML_types = {};
  YAML_literals = {
      {('f'), QLatin1String("false")},
      {('t'), QLatin1String("true")},
      {('n'), QLatin1String("null")},
  };

  YAML_builtin = {};
  YAML_other = {};
}
void loadYAMLData(LanguageData &types, LanguageData &keywords,
                  LanguageData &builtin, LanguageData &literals,
                  LanguageData &other)
{
  if (!YAMLDataInitialized)
  {
    initYAMLData();
    YAMLDataInitialized = true;
  }
  types = YAML_types;
  keywords = YAML_keywords;
  builtin = YAML_builtin;
  literals = YAML_literals;
  other = YAML_other;
}

/********************************************************/
/***   VEX DATA   ***************************************/
/********************************************************/
static bool vexDataInitialized = false;
static LanguageData vex_keywords;
static LanguageData vex_types;
static LanguageData vex_literals;
static LanguageData vex_builtin;
static LanguageData vex_other;
void initVEXData()
{
  vex_keywords
      = {{'b', QLatin1String("break")},       {'c', QLatin1String("continue")},
         {'d', QLatin1String("do")},          {'e', QLatin1String("else")},
         {'f', QLatin1String("for")},         {'f', QLatin1String("foreach")},
         {'f', QLatin1String("forpoints")},   {'f', QLatin1String("function")},
         {'g', QLatin1String("gather")},      {'i', QLatin1String("if")},
         {'i', QLatin1String("illuminance")}, {'r', QLatin1String("return")},
         {'w', QLatin1String("while")}};
  vex_types = {
      {'b', QLatin1String("bsdf")},    {'c', QLatin1String("char")},
      {'c', QLatin1String("color")},   {'f', QLatin1String("float")},
      {'i', QLatin1String("int")},     {'i', QLatin1String("integer")},
      {'m', QLatin1String("matrix")},  {'m', QLatin1String("matrix2")},
      {'m', QLatin1String("matrix3")}, {'m', QLatin1String("matrix4")},
      {'n', QLatin1String("normal")},  {'p', QLatin1String("point")},
      {'s', QLatin1String("string")},  {'s', QLatin1String("struct")},
      {'t', QLatin1String("typedef")}, {'u', QLatin1String("union")},
      {'v', QLatin1String("vector")},  {'v', QLatin1String("vector2")},
      {'v', QLatin1String("vector4")}, {'v', QLatin1String("void")},
  };
  vex_literals = {
      {('f'), QLatin1String("false")},
      {('t'), QLatin1String("true")},
      {('n'), QLatin1String("null")},
  };

  vex_builtin = {{'D', QLatin1String("Du")},
                 {'D', QLatin1String("Dv")},
                 {'D', QLatin1String("Dw")},
                 {'a', QLatin1String("abs")},
                 {'a', QLatin1String("accessframe")},
                 {'a', QLatin1String("acos")},
                 {'a', QLatin1String("addattrib")},
                 {'a', QLatin1String("addattribute")},
                 {'a', QLatin1String("adddetailattrib")},
                 {'a', QLatin1String("addgroup")},
                 {'a', QLatin1String("addpoint")},
                 {'a', QLatin1String("addpointattrib")},
                 {'a', QLatin1String("addprim")},
                 {'a', QLatin1String("addprimattrib")},
                 {'a', QLatin1String("addvariablename")},
                 {'a', QLatin1String("addvertex")},
                 {'a', QLatin1String("addvertexattrib")},
                 {'a', QLatin1String("addvisualizer")},
                 {'a', QLatin1String("agentaddclip")},
                 {'a', QLatin1String("agentclipcatalog")},
                 {'a', QLatin1String("agentclipchannel")},
                 {'a', QLatin1String("agentcliplength")},
                 {'a', QLatin1String("agentclipnames")},
                 {'a', QLatin1String("agentclipsample")},
                 {'a', QLatin1String("agentclipsamplelocal")},
                 {'a', QLatin1String("agentclipsamplerate")},
                 {'a', QLatin1String("agentclipsampleworld")},
                 {'a', QLatin1String("agentcliptimes")},
                 {'a', QLatin1String("agentclipweights")},
                 {'a', QLatin1String("agentcollisionlayer")},
                 {'a', QLatin1String("agentcurrentlayer")},
                 {'a', QLatin1String("agentlayerbindings")},
                 {'a', QLatin1String("agentlayers")},
                 {'a', QLatin1String("agentlayershapes")},
                 {'a', QLatin1String("agentlocaltransform")},
                 {'a', QLatin1String("agentlocaltransforms")},
                 {'a', QLatin1String("agentrigchildren")},
                 {'a', QLatin1String("agentrigfind")},
                 {'a', QLatin1String("agentrigparent")},
                 {'a', QLatin1String("agenttransformcount")},
                 {'a', QLatin1String("agenttransformnames")},
                 {'a', QLatin1String("agenttransformtolocal")},
                 {'a', QLatin1String("agenttransformtoworld")},
                 {'a', QLatin1String("agentworldtransform")},
                 {'a', QLatin1String("agentworldtransforms")},
                 {'a', QLatin1String("albedo")},
                 {'a', QLatin1String("alphaname")},
                 {'a', QLatin1String("ambient")},
                 {'a', QLatin1String("anoise")},
                 {'a', QLatin1String("append")},
                 {'a', QLatin1String("area")},
                 {'a', QLatin1String("argsort")},
                 {'a', QLatin1String("array")},
                 {'a', QLatin1String("ashikhmin")},
                 {'a', QLatin1String("asin")},
                 {'a', QLatin1String("assert_enabled")},
                 {'a', QLatin1String("assign")},
                 {'a', QLatin1String("atan")},
                 {'a', QLatin1String("atan2")},
                 {'a', QLatin1String("atof")},
                 {'a', QLatin1String("atoi")},
                 {'a', QLatin1String("atten")},
                 {'a', QLatin1String("attrib")},
                 {'a', QLatin1String("attribclass")},
                 {'a', QLatin1String("attribsize")},
                 {'a', QLatin1String("attribtype")},
                 {'a', QLatin1String("attribtypeinfo")},
                 {'a', QLatin1String("avg")},
                 {'b', QLatin1String("binput")},
                 {'b', QLatin1String("blackbody")},
                 {'b', QLatin1String("blinn")},
                 {'b', QLatin1String("blinnBRDF")},
                 {'b', QLatin1String("bouncelabel")},
                 {'b', QLatin1String("bouncemask")},
                 {'b', QLatin1String("bumpmap")},
                 {'b', QLatin1String("bumpmapA")},
                 {'b', QLatin1String("bumpmapB")},
                 {'b', QLatin1String("bumpmapG")},
                 {'b', QLatin1String("bumpmapL")},
                 {'b', QLatin1String("bumpmapR")},
                 {'b', QLatin1String("bumpname")},
                 {'c', QLatin1String("cbrt")},
                 {'c', QLatin1String("ceil")},
                 {'c', QLatin1String("ch")},
                 {'c', QLatin1String("ch3")},
                 {'c', QLatin1String("ch4")},
                 {'c', QLatin1String("chend")},
                 {'c', QLatin1String("chendf")},
                 {'c', QLatin1String("chendt")},
                 {'c', QLatin1String("chf")},
                 {'c', QLatin1String("chi")},
                 {'c', QLatin1String("chinput")},
                 {'c', QLatin1String("chname")},
                 {'c', QLatin1String("chnumchan")},
                 {'c', QLatin1String("chp")},
                 {'c', QLatin1String("chr")},
                 {'c', QLatin1String("chramp")},
                 {'c', QLatin1String("chrate")},
                 {'c', QLatin1String("chs")},
                 {'c', QLatin1String("chsraw")},
                 {'c', QLatin1String("chstart")},
                 {'c', QLatin1String("chstartf")},
                 {'c', QLatin1String("chstartt")},
                 {'c', QLatin1String("chv")},
                 {'c', QLatin1String("cinput")},
                 {'c', QLatin1String("ckspline")},
                 {'c', QLatin1String("clamp")},
                 {'c', QLatin1String("clip")},
                 {'c', QLatin1String("colormap")},
                 {'c', QLatin1String("colorname")},
                 {'c', QLatin1String("computenormal")},
                 {'c', QLatin1String("concat")},
                 {'c', QLatin1String("cone")},
                 {'c', QLatin1String("cos")},
                 {'c', QLatin1String("cosh")},
                 {'c', QLatin1String("cracktransform")},
                 {'c', QLatin1String("cross")},
                 {'c', QLatin1String("cspline")},
                 {'c', QLatin1String("ctransform")},
                 {'c', QLatin1String("curlnoise")},
                 {'c', QLatin1String("curlnoise2d")},
                 {'c', QLatin1String("curlxnoise")},
                 {'c', QLatin1String("curlxnoise2d")},
                 {'c', QLatin1String("cvex_bsdf")},
                 {'d', QLatin1String("degrees")},
                 {'d', QLatin1String("depthmap")},
                 {'d', QLatin1String("depthname")},
                 {'d', QLatin1String("detail")},
                 {'d', QLatin1String("detailattrib")},
                 {'d', QLatin1String("detailattribsize")},
                 {'d', QLatin1String("detailattribtype")},
                 {'d', QLatin1String("detailattribtypeinfo")},
                 {'d', QLatin1String("detailintrinsic")},
                 {'d', QLatin1String("determinant")},
                 {'d', QLatin1String("diffuse")},
                 {'d', QLatin1String("diffuseBRDF")},
                 {'d', QLatin1String("dihedral")},
                 {'d', QLatin1String("dimport")},
                 {'d', QLatin1String("distance")},
                 {'d', QLatin1String("distance2")},
                 {'d', QLatin1String("dot")},
                 {'d', QLatin1String("dsmpixel")},
                 {'e', QLatin1String("eigenvalues")},
                 {'e', QLatin1String("endswith")},
                 {'e', QLatin1String("environment")},
                 {'e', QLatin1String("erf")},
                 {'e', QLatin1String("erf_inv")},
                 {'e', QLatin1String("erfc")},
                 {'e', QLatin1String("error")},
                 {'e', QLatin1String("eulertoquaternion")},
                 {'e', QLatin1String("eval_bsdf")},
                 {'e', QLatin1String("exp")},
                 {'e', QLatin1String("expand_udim")},
                 {'e', QLatin1String("expandpointgroup")},
                 {'e', QLatin1String("expandprimgroup")},
                 {'f', QLatin1String("fastshadow")},
                 {'f', QLatin1String("filamentsample")},
                 {'f', QLatin1String("file_stat")},
                 {'f', QLatin1String("filtershadow")},
                 {'f', QLatin1String("filterstep")},
                 {'f', QLatin1String("find")},
                 {'f', QLatin1String("findattribval")},
                 {'f', QLatin1String("findattribvalcount")},
                 {'f', QLatin1String("finput")},
                 {'f', QLatin1String("fit")},
                 {'f', QLatin1String("fit01")},
                 {'f', QLatin1String("fit10")},
                 {'f', QLatin1String("fit11")},
                 {'f', QLatin1String("floor")},
                 {'f', QLatin1String("flownoise")},
                 {'f', QLatin1String("flowpnoise")},
                 {'f', QLatin1String("frac")},
                 {'f', QLatin1String("fresnel")},
                 {'f', QLatin1String("fromNDC")},
                 {'f', QLatin1String("frontface")},
                 {'f', QLatin1String("fuzzify")},
                 {'f', QLatin1String("fuzzy_and")},
                 {'f', QLatin1String("fuzzy_defuzz_centroid")},
                 {'f', QLatin1String("fuzzy_nand")},
                 {'f', QLatin1String("fuzzy_nor")},
                 {'f', QLatin1String("fuzzy_not")},
                 {'f', QLatin1String("fuzzy_nxor")},
                 {'f', QLatin1String("fuzzy_or")},
                 {'f', QLatin1String("fuzzy_xor")},
                 {'g', QLatin1String("geoself")},
                 {'g', QLatin1String("getattrib")},
                 {'g', QLatin1String("getattribute")},
                 {'g', QLatin1String("getbbox")},
                 {'g', QLatin1String("getblurP")},
                 {'g', QLatin1String("getbounces")},
                 {'g', QLatin1String("getbounds")},
                 {'g', QLatin1String("getcomp")},
                 {'g', QLatin1String("getcomponents")},
                 {'g', QLatin1String("getderiv")},
                 {'g', QLatin1String("getfogname")},
                 {'g', QLatin1String("getglobalraylevel")},
                 {'g', QLatin1String("getlight")},
                 {'g', QLatin1String("getlightid")},
                 {'g', QLatin1String("getlightname")},
                 {'g', QLatin1String("getlights")},
                 {'g', QLatin1String("getlightscope")},
                 {'g', QLatin1String("getmaterial")},
                 {'g', QLatin1String("getobjectname")},
                 {'g', QLatin1String("getphotonlight")},
                 {'g', QLatin1String("getpointbbox")},
                 {'g', QLatin1String("getprimid")},
                 {'g', QLatin1String("getptextureid")},
                 {'g', QLatin1String("getraylevel")},
                 {'g', QLatin1String("getrayweight")},
                 {'g', QLatin1String("getsamplestore")},
                 {'g', QLatin1String("getscope")},
                 {'g', QLatin1String("getsmoothP")},
                 {'g', QLatin1String("getspace")},
                 {'g', QLatin1String("getuvobjects")},
                 {'g', QLatin1String("getuvtangents")},
                 {'g', QLatin1String("gradient")},
                 {'h', QLatin1String("hair")},
                 {'h', QLatin1String("hasattrib")},
                 {'h', QLatin1String("hasdetailattrib")},
                 {'h', QLatin1String("haslight")},
                 {'h', QLatin1String("hasplane")},
                 {'h', QLatin1String("haspointattrib")},
                 {'h', QLatin1String("hasprimattrib")},
                 {'h', QLatin1String("hasvertexattrib")},
                 {'h', QLatin1String("hedge_dstpoint")},
                 {'h', QLatin1String("hedge_dstvertex")},
                 {'h', QLatin1String("hedge_equivcount")},
                 {'h', QLatin1String("hedge_isequiv")},
                 {'h', QLatin1String("hedge_isprimary")},
                 {'h', QLatin1String("hedge_isvalid")},
                 {'h', QLatin1String("hedge_next")},
                 {'h', QLatin1String("hedge_nextequiv")},
                 {'h', QLatin1String("hedge_postdstpoint")},
                 {'h', QLatin1String("hedge_postdstvertex")},
                 {'h', QLatin1String("hedge_presrcpoint")},
                 {'h', QLatin1String("hedge_presrcvertex")},
                 {'h', QLatin1String("hedge_prev")},
                 {'h', QLatin1String("hedge_prim")},
                 {'h', QLatin1String("hedge_primary")},
                 {'h', QLatin1String("hedge_srcpoint")},
                 {'h', QLatin1String("hedge_srcvertex")},
                 {'h', QLatin1String("henyeygreenstein")},
                 {'h', QLatin1String("hscript_noise")},
                 {'h', QLatin1String("hscript_rand")},
                 {'h', QLatin1String("hscript_snoise")},
                 {'h', QLatin1String("hscript_sturb")},
                 {'h', QLatin1String("hscript_turb")},
                 {'h', QLatin1String("hsvtorgb")},
                 {'i', QLatin1String("iaspect")},
                 {'i', QLatin1String("ichname")},
                 {'i', QLatin1String("ident")},
                 {'i', QLatin1String("idtopoint")},
                 {'i', QLatin1String("idtoprim")},
                 {'i', QLatin1String("iend")},
                 {'i', QLatin1String("iendtime")},
                 {'i', QLatin1String("ihasplane")},
                 {'i', QLatin1String("import")},
                 {'i', QLatin1String("ingroup")},
                 {'i', QLatin1String("inpointgroup")},
                 {'i', QLatin1String("inprimgroup")},
                 {'i', QLatin1String("insert")},
                 {'i', QLatin1String("instance")},
                 {'i', QLatin1String("interpolate")},
                 {'i', QLatin1String("intersect")},
                 {'i', QLatin1String("intersect_all")},
                 {'i', QLatin1String("intersect_lights")},
                 {'i', QLatin1String("inumplanes")},
                 {'i', QLatin1String("invert")},
                 {'i', QLatin1String("invertexgroup")},
                 {'i', QLatin1String("iplaneindex")},
                 {'i', QLatin1String("iplanename")},
                 {'i', QLatin1String("iplanesize")},
                 {'i', QLatin1String("irate")},
                 {'i', QLatin1String("irradiance")},
                 {'i', QLatin1String("isalpha")},
                 {'i', QLatin1String("isbound")},
                 {'i', QLatin1String("isconnected")},
                 {'i', QLatin1String("isdigit")},
                 {'i', QLatin1String("isfinite")},
                 {'i', QLatin1String("isfogray")},
                 {'i', QLatin1String("isframes")},
                 {'i', QLatin1String("isnan")},
                 {'i', QLatin1String("isotropic")},
                 {'i', QLatin1String("israytracing")},
                 {'i', QLatin1String("issamples")},
                 {'i', QLatin1String("isseconds")},
                 {'i', QLatin1String("isshadowray")},
                 {'i', QLatin1String("istart")},
                 {'i', QLatin1String("istarttime")},
                 {'i', QLatin1String("isuvrendering")},
                 {'i', QLatin1String("isvalidindex")},
                 {'i', QLatin1String("isvarying")},
                 {'i', QLatin1String("itoa")},
                 {'i', QLatin1String("ixres")},
                 {'i', QLatin1String("iyres")},
                 {'j', QLatin1String("join")},
                 {'k', QLatin1String("kspline")},
                 {'l', QLatin1String("len")},
                 {'l', QLatin1String("length")},
                 {'l', QLatin1String("length2")},
                 {'l', QLatin1String("lerp")},
                 {'l', QLatin1String("lightid")},
                 {'l', QLatin1String("limit_sample_space")},
                 {'l', QLatin1String("limport")},
                 {'l', QLatin1String("lkspline")},
                 {'l', QLatin1String("log")},
                 {'l', QLatin1String("log10")},
                 {'l', QLatin1String("lookat")},
                 {'l', QLatin1String("lspline")},
                 {'l', QLatin1String("lstrip")},
                 {'l', QLatin1String("luminance")},
                 {'l', QLatin1String("lumname")},
                 {'m', QLatin1String("makebasis")},
                 {'m', QLatin1String("maketransform")},
                 {'m', QLatin1String("maskname")},
                 {'m', QLatin1String("match")},
                 {'m', QLatin1String("matchvex_blinn")},
                 {'m', QLatin1String("matchvex_specular")},
                 {'m', QLatin1String("mattrib")},
                 {'m', QLatin1String("max")},
                 {'m', QLatin1String("mdensity")},
                 {'m', QLatin1String("metaimport")},
                 {'m', QLatin1String("metamarch")},
                 {'m', QLatin1String("metanext")},
                 {'m', QLatin1String("metastart")},
                 {'m', QLatin1String("metaweight")},
                 {'m', QLatin1String("min")},
                 {'m', QLatin1String("minpos")},
                 {'m', QLatin1String("mspace")},
                 {'n', QLatin1String("nametopoint")},
                 {'n', QLatin1String("nametoprim")},
                 {'n', QLatin1String("nbouncetypes")},
                 {'n', QLatin1String("nearpoint")},
                 {'n', QLatin1String("nearpoints")},
                 {'n', QLatin1String("neighbour")},
                 {'n', QLatin1String("neighbourcount")},
                 {'n', QLatin1String("neighbours")},
                 {'n', QLatin1String("newgroup")},
                 {'n', QLatin1String("newsampler")},
                 {'n', QLatin1String("nextsample")},
                 {'n', QLatin1String("ninput")},
                 {'n', QLatin1String("noise")},
                 {'n', QLatin1String("noised")},
                 {'n', QLatin1String("normal_bsdf")},
                 {'n', QLatin1String("normalize")},
                 {'n', QLatin1String("normalname")},
                 {'n', QLatin1String("npoints")},
                 {'n', QLatin1String("npointsgroup")},
                 {'n', QLatin1String("nprimitives")},
                 {'n', QLatin1String("nprimitivesgroup")},
                 {'n', QLatin1String("nrandom")},
                 {'n', QLatin1String("ntransform")},
                 {'n', QLatin1String("nuniqueval")},
                 {'n', QLatin1String("nvertices")},
                 {'n', QLatin1String("nverticesgroup")},
                 {'o', QLatin1String("occlusion")},
                 {'o', QLatin1String("onoise")},
                 {'o', QLatin1String("opdigits")},
                 {'o', QLatin1String("opend")},
                 {'o', QLatin1String("opfullpath")},
                 {'o', QLatin1String("opstart")},
                 {'o', QLatin1String("optransform")},
                 {'o', QLatin1String("ord")},
                 {'o', QLatin1String("osd_facecount")},
                 {'o', QLatin1String("osd_firstpatch")},
                 {'o', QLatin1String("osd_limitsurface")},
                 {'o', QLatin1String("osd_limitsurfacevertex")},
                 {'o', QLatin1String("osd_patchcount")},
                 {'o', QLatin1String("osd_patches")},
                 {'o', QLatin1String("outerproduct")},
                 {'o', QLatin1String("ow_nspace")},
                 {'o', QLatin1String("ow_space")},
                 {'o', QLatin1String("ow_vspace")},
                 {'p', QLatin1String("pack_inttosafefloat")},
                 {'p', QLatin1String("pathtrace")},
                 {'p', QLatin1String("pcclose")},
                 {'p', QLatin1String("pcconvex")},
                 {'p', QLatin1String("pcexport")},
                 {'p', QLatin1String("pcfarthest")},
                 {'p', QLatin1String("pcfilter")},
                 {'p', QLatin1String("pcfind")},
                 {'p', QLatin1String("pcfind_radius")},
                 {'p', QLatin1String("pcgenerate")},
                 {'p', QLatin1String("pcimport")},
                 {'p', QLatin1String("pcimportbyidx3")},
                 {'p', QLatin1String("pcimportbyidx4")},
                 {'p', QLatin1String("pcimportbyidxf")},
                 {'p', QLatin1String("pcimportbyidxi")},
                 {'p', QLatin1String("pcimportbyidxp")},
                 {'p', QLatin1String("pcimportbyidxs")},
                 {'p', QLatin1String("pcimportbyidxv")},
                 {'p', QLatin1String("pciterate")},
                 {'p', QLatin1String("pcnumfound")},
                 {'p', QLatin1String("pcopen")},
                 {'p', QLatin1String("pcopenlod")},
                 {'p', QLatin1String("pcsampleleaf")},
                 {'p', QLatin1String("pcsize")},
                 {'p', QLatin1String("pcunshaded")},
                 {'p', QLatin1String("pcwrite")},
                 {'p', QLatin1String("pgfind")},
                 {'p', QLatin1String("phong")},
                 {'p', QLatin1String("phongBRDF")},
                 {'p', QLatin1String("phonglobe")},
                 {'p', QLatin1String("photonmap")},
                 {'p', QLatin1String("planeindex")},
                 {'p', QLatin1String("planename")},
                 {'p', QLatin1String("planesize")},
                 {'p', QLatin1String("pluralize")},
                 {'p', QLatin1String("pnoise")},
                 {'p', QLatin1String("point")},
                 {'p', QLatin1String("pointattrib")},
                 {'p', QLatin1String("pointattribsize")},
                 {'p', QLatin1String("pointattribtype")},
                 {'p', QLatin1String("pointattribtypeinfo")},
                 {'p', QLatin1String("pointedge")},
                 {'p', QLatin1String("pointhedge")},
                 {'p', QLatin1String("pointhedgenext")},
                 {'p', QLatin1String("pointname")},
                 {'p', QLatin1String("pointprims")},
                 {'p', QLatin1String("pointvertex")},
                 {'p', QLatin1String("pointvertices")},
                 {'p', QLatin1String("polardecomp")},
                 {'p', QLatin1String("pop")},
                 {'p', QLatin1String("pow")},
                 {'p', QLatin1String("prim")},
                 {'p', QLatin1String("prim_attribute")},
                 {'p', QLatin1String("prim_normal")},
                 {'p', QLatin1String("primattrib")},
                 {'p', QLatin1String("primattribsize")},
                 {'p', QLatin1String("primattribtype")},
                 {'p', QLatin1String("primattribtypeinfo")},
                 {'p', QLatin1String("primhedge")},
                 {'p', QLatin1String("primintrinsic")},
                 {'p', QLatin1String("primpoint")},
                 {'p', QLatin1String("primpoints")},
                 {'p', QLatin1String("primuv")},
                 {'p', QLatin1String("primvertex")},
                 {'p', QLatin1String("primvertexcount")},
                 {'p', QLatin1String("primvertices")},
                 {'p', QLatin1String("print_once")},
                 {'p', QLatin1String("printf")},
                 {'p', QLatin1String("product")},
                 {'p', QLatin1String("ptexture")},
                 {'p', QLatin1String("ptlined")},
                 {'p', QLatin1String("ptransform")},
                 {'p', QLatin1String("push")},
                 {'q', QLatin1String("qconvert")},
                 {'q', QLatin1String("qdistance")},
                 {'q', QLatin1String("qinvert")},
                 {'q', QLatin1String("qmultiply")},
                 {'q', QLatin1String("qrotate")},
                 {'q', QLatin1String("quaternion")},
                 {'r', QLatin1String("radians")},
                 {'r', QLatin1String("rand")},
                 {'r', QLatin1String("random")},
                 {'r', QLatin1String("random_fhash")},
                 {'r', QLatin1String("random_ihash")},
                 {'r', QLatin1String("random_shash")},
                 {'r', QLatin1String("random_sobol")},
                 {'r', QLatin1String("rawbumpmap")},
                 {'r', QLatin1String("rawbumpmapA")},
                 {'r', QLatin1String("rawbumpmapB")},
                 {'r', QLatin1String("rawbumpmapG")},
                 {'r', QLatin1String("rawbumpmapL")},
                 {'r', QLatin1String("rawbumpmapR")},
                 {'r', QLatin1String("rawcolormap")},
                 {'r', QLatin1String("rayhittest")},
                 {'r', QLatin1String("rayimport")},
                 {'r', QLatin1String("re_find")},
                 {'r', QLatin1String("re_findall")},
                 {'r', QLatin1String("re_match")},
                 {'r', QLatin1String("re_replace")},
                 {'r', QLatin1String("re_split")},
                 {'r', QLatin1String("reflect")},
                 {'r', QLatin1String("reflectlight")},
                 {'r', QLatin1String("refract")},
                 {'r', QLatin1String("refractlight")},
                 {'r', QLatin1String("relativepath")},
                 {'r', QLatin1String("relbbox")},
                 {'r', QLatin1String("relpointbbox")},
                 {'r', QLatin1String("removegroup")},
                 {'r', QLatin1String("removeindex")},
                 {'r', QLatin1String("removepoint")},
                 {'r', QLatin1String("removeprim")},
                 {'r', QLatin1String("removevalue")},
                 {'r', QLatin1String("renderstate")},
                 {'r', QLatin1String("reorder")},
                 {'r', QLatin1String("resample_linear")},
                 {'r', QLatin1String("resize")},
                 {'r', QLatin1String("resolvemissedray")},
                 {'r', QLatin1String("reverse")},
                 {'r', QLatin1String("rgbtohsv")},
                 {'r', QLatin1String("rgbtoxyz")},
                 {'r', QLatin1String("rint")},
                 {'r', QLatin1String("rotate")},
                 {'r', QLatin1String("rotate_x_to")},
                 {'r', QLatin1String("rstrip")},
                 {'s', QLatin1String("sample_bsdf")},
                 {'s', QLatin1String("sample_cauchy")},
                 {'s', QLatin1String("sample_circle_arc")},
                 {'s', QLatin1String("sample_circle_edge_uniform")},
                 {'s', QLatin1String("sample_circle_slice")},
                 {'s', QLatin1String("sample_circle_uniform")},
                 {'s', QLatin1String("sample_direction_cone")},
                 {'s', QLatin1String("sample_direction_uniform")},
                 {'s', QLatin1String("sample_discrete")},
                 {'s', QLatin1String("sample_exponential")},
                 {'s', QLatin1String("sample_geometry")},
                 {'s', QLatin1String("sample_hemisphere")},
                 {'s', QLatin1String("sample_hypersphere_cone")},
                 {'s', QLatin1String("sample_hypersphere_uniform")},
                 {'s', QLatin1String("sample_light")},
                 {'s', QLatin1String("sample_lognormal")},
                 {'s', QLatin1String("sample_lognormal_by_median")},
                 {'s', QLatin1String("sample_normal")},
                 {'s', QLatin1String("sample_orientation_cone")},
                 {'s', QLatin1String("sample_orientation_uniform")},
                 {'s', QLatin1String("sample_photon")},
                 {'s', QLatin1String("sample_sphere_cone")},
                 {'s', QLatin1String("sample_sphere_uniform")},
                 {'s', QLatin1String("sampledisk")},
                 {'s', QLatin1String("scale")},
                 {'s', QLatin1String("select")},
                 {'s', QLatin1String("sensor_panorama_create")},
                 {'s', QLatin1String("sensor_panorama_getcolor")},
                 {'s', QLatin1String("sensor_panorama_getcone")},
                 {'s', QLatin1String("sensor_panorama_getdepth")},
                 {'s', QLatin1String("sensor_save")},
                 {'s', QLatin1String("serialize")},
                 {'s', QLatin1String("set")},
                 {'s', QLatin1String("setagentclipnames")},
                 {'s', QLatin1String("setagentcliptimes")},
                 {'s', QLatin1String("setagentclipweights")},
                 {'s', QLatin1String("setagentcollisionlayer")},
                 {'s', QLatin1String("setagentcurrentlayer")},
                 {'s', QLatin1String("setagentlocaltransform")},
                 {'s', QLatin1String("setagentlocaltransforms")},
                 {'s', QLatin1String("setagentworldtransform")},
                 {'s', QLatin1String("setagentworldtransforms")},
                 {'s', QLatin1String("setattrib")},
                 {'s', QLatin1String("setattribtypeinfo")},
                 {'s', QLatin1String("setcomp")},
                 {'s', QLatin1String("setcurrentlight")},
                 {'s', QLatin1String("setdetailattrib")},
                 {'s', QLatin1String("setpointattrib")},
                 {'s', QLatin1String("setpointgroup")},
                 {'s', QLatin1String("setprimattrib")},
                 {'s', QLatin1String("setprimgroup")},
                 {'s', QLatin1String("setprimintrinsic")},
                 {'s', QLatin1String("setprimvertex")},
                 {'s', QLatin1String("setsamplestore")},
                 {'s', QLatin1String("setvertexattrib")},
                 {'s', QLatin1String("setvertexgroup")},
                 {'s', QLatin1String("setvertexpoint")},
                 {'s', QLatin1String("shadow")},
                 {'s', QLatin1String("shadow_light")},
                 {'s', QLatin1String("shadowmap")},
                 {'s', QLatin1String("shimport")},
                 {'s', QLatin1String("shl")},
                 {'s', QLatin1String("shr")},
                 {'s', QLatin1String("shrz")},
                 {'s', QLatin1String("sign")},
                 {'s', QLatin1String("simport")},
                 {'s', QLatin1String("sin")},
                 {'s', QLatin1String("sinh")},
                 {'s', QLatin1String("sleep")},
                 {'s', QLatin1String("slerp")},
                 {'s', QLatin1String("slice")},
                 {'s', QLatin1String("slideframe")},
                 {'s', QLatin1String("smooth")},
                 {'s', QLatin1String("smoothrotation")},
                 {'s', QLatin1String("snoise")},
                 {'s', QLatin1String("solvecubic")},
                 {'s', QLatin1String("solvepoly")},
                 {'s', QLatin1String("solvequadratic")},
                 {'s', QLatin1String("sort")},
                 {'s', QLatin1String("specular")},
                 {'s', QLatin1String("specularBRDF")},
                 {'s', QLatin1String("spline")},
                 {'s', QLatin1String("split")},
                 {'s', QLatin1String("splitpath")},
                 {'s', QLatin1String("sprintf")},
                 {'s', QLatin1String("sqrt")},
                 {'s', QLatin1String("startswith")},
                 {'s', QLatin1String("storelightexport")},
                 {'s', QLatin1String("strip")},
                 {'s', QLatin1String("strlen")},
                 {'s', QLatin1String("sum")},
                 {'s', QLatin1String("switch")},
                 {'s', QLatin1String("swizzle")},
                 {'t', QLatin1String("tan")},
                 {'t', QLatin1String("tanh")},
                 {'t', QLatin1String("tet_adjacent")},
                 {'t', QLatin1String("tet_faceindex")},
                 {'t', QLatin1String("teximport")},
                 {'t', QLatin1String("texprintf")},
                 {'t', QLatin1String("texture")},
                 {'t', QLatin1String("texture3d")},
                 {'t', QLatin1String("texture3dBox")},
                 {'t', QLatin1String("titlecase")},
                 {'t', QLatin1String("toNDC")},
                 {'t', QLatin1String("tolower")},
                 {'t', QLatin1String("toupper")},
                 {'t', QLatin1String("trace")},
                 {'t', QLatin1String("translate")},
                 {'t', QLatin1String("translucent")},
                 {'t', QLatin1String("transpose")},
                 {'t', QLatin1String("trunc")},
                 {'t', QLatin1String("tw_nspace")},
                 {'t', QLatin1String("tw_space")},
                 {'t', QLatin1String("tw_vspace")},
                 {'u', QLatin1String("uniqueval")},
                 {'u', QLatin1String("unpack_intfromsafefloat")},
                 {'u', QLatin1String("unserialize")},
                 {'u', QLatin1String("upush")},
                 {'u', QLatin1String("uvunwrap")},
                 {'v', QLatin1String("variance")},
                 {'v', QLatin1String("velocityname")},
                 {'v', QLatin1String("vertex")},
                 {'v', QLatin1String("vertexattrib")},
                 {'v', QLatin1String("vertexattribsize")},
                 {'v', QLatin1String("vertexattribtype")},
                 {'v', QLatin1String("vertexattribtypeinfo")},
                 {'v', QLatin1String("vertexhedge")},
                 {'v', QLatin1String("vertexindex")},
                 {'v', QLatin1String("vertexnext")},
                 {'v', QLatin1String("vertexpoint")},
                 {'v', QLatin1String("vertexprev")},
                 {'v', QLatin1String("vertexprim")},
                 {'v', QLatin1String("vertexprimindex")},
                 {'v', QLatin1String("vnoise")},
                 {'v', QLatin1String("volume")},
                 {'v', QLatin1String("volumegradient")},
                 {'v', QLatin1String("volumeindex")},
                 {'v', QLatin1String("volumeindexorigin")},
                 {'v', QLatin1String("volumeindextopos")},
                 {'v', QLatin1String("volumeindexv")},
                 {'v', QLatin1String("volumepostoindex")},
                 {'v', QLatin1String("volumeres")},
                 {'v', QLatin1String("volumesample")},
                 {'v', QLatin1String("volumesamplev")},
                 {'v', QLatin1String("vtransform")},
                 {'w', QLatin1String("warning")},
                 {'w', QLatin1String("wireblinn")},
                 {'w', QLatin1String("wirediffuse")},
                 {'w', QLatin1String("wnoise")},
                 {'w', QLatin1String("wo_nspace")},
                 {'w', QLatin1String("wo_space")},
                 {'w', QLatin1String("wo_vspace")},
                 {'w', QLatin1String("writepixel")},
                 {'w', QLatin1String("wt_nspace")},
                 {'w', QLatin1String("wt_space")},
                 {'w', QLatin1String("wt_vspace")},
                 {'x', QLatin1String("xnoise")},
                 {'x', QLatin1String("xnoised")},
                 {'x', QLatin1String("xyzdist")},
                 {'x', QLatin1String("xyztorgb")}};
  vex_other = {
      {('d'), QLatin1String("define")},  {('e'), QLatin1String("else")},
      {('e'), QLatin1String("endif")},   {('i'), QLatin1String("if")},
      {('i'), QLatin1String("ifdef")},   {('i'), QLatin1String("ifndef")},
      {('i'), QLatin1String("include")}, {('p'), QLatin1String("pragma")},
      {('u'), QLatin1String("undef")},
  };
}
void loadVEXData(LanguageData &types, LanguageData &keywords,
                 LanguageData &builtin, LanguageData &literals,
                 LanguageData &other)
{
  if (!vexDataInitialized)
  {
    initVEXData();
    vexDataInitialized = true;
  }
  types = vex_types;
  keywords = vex_keywords;
  builtin = vex_builtin;
  literals = vex_literals;
  other = vex_other;
}

/********************************************************/
/***   CMAKE DATA   ***************************************/
/********************************************************/
static bool cmakeDataInitialized = false;
static QMultiHash<char, QLatin1String> cmake_keywords;
static QMultiHash<char, QLatin1String> cmake_types;
static QMultiHash<char, QLatin1String> cmake_literals;
static QMultiHash<char, QLatin1String> cmake_builtin;
static QMultiHash<char, QLatin1String> cmake_other;
void initCMakeData()
{
  cmake_keywords = {{'b', QLatin1String("break")},
                    {'c', QLatin1String("cmake_host_system_information")},
                    {'c', QLatin1String("cmake_minimum_required")},
                    {'c', QLatin1String("cmake_parse_arguments")},
                    {'c', QLatin1String("cmake_policy")},
                    {'c', QLatin1String("configure_file")},
                    {'c', QLatin1String("continue")},
                    {'e', QLatin1String("elseif")},
                    {'e', QLatin1String("else")},
                    {'e', QLatin1String("endforeach")},
                    {'e', QLatin1String("endfunction")},
                    {'e', QLatin1String("endif")},
                    {'e', QLatin1String("endmacro")},
                    {'e', QLatin1String("endwhile")},
                    {'e', QLatin1String("execute_process")},
                    {'f', QLatin1String("file")},
                    {'f', QLatin1String("find_file")},
                    {'f', QLatin1String("find_library")},
                    {'f', QLatin1String("find_package")},
                    {'f', QLatin1String("find_path")},
                    {'f', QLatin1String("find_program")},
                    {'f', QLatin1String("foreach")},
                    {'f', QLatin1String("function")},
                    {'g', QLatin1String("get_cmake_property")},
                    {'g', QLatin1String("get_directory_property")},
                    {'g', QLatin1String("get_filename_component")},
                    {'g', QLatin1String("get_property")},
                    {'i', QLatin1String("if")},
                    {'i', QLatin1String("include")},
                    {'i', QLatin1String("include_guard")},
                    {'l', QLatin1String("list")},
                    {'m', QLatin1String("macro")},
                    {'m', QLatin1String("mark_as_advanced")},
                    {'m', QLatin1String("math")},
                    {'m', QLatin1String("message")},
                    {'o', QLatin1String("option")},
                    {'r', QLatin1String("return")},
                    {'s', QLatin1String("separate_arguments")},
                    {'s', QLatin1String("set_directory_properties")},
                    {'s', QLatin1String("set")},
                    {'s', QLatin1String("set_property")},
                    {'s', QLatin1String("site_name")},
                    {'s', QLatin1String("string")},
                    {'u', QLatin1String("unset")},
                    {'v', QLatin1String("variable_watch")},
                    {'w', QLatin1String("while")},
                    {'a', QLatin1String("add_compile_definitions")},
                    {'a', QLatin1String("add_compile_options")},
                    {'A', QLatin1String("ADD_COMPILE_OPTIONS")},
                    {'a', QLatin1String("add_custom_command")},
                    {'a', QLatin1String("add_custom_target")},
                    {'a', QLatin1String("add_definitions")},
                    {'a', QLatin1String("add_dependencies")},
                    {'a', QLatin1String("add_executable")},
                    {'a', QLatin1String("add_library")},
                    {'a', QLatin1String("add_link_options")},
                    {'a', QLatin1String("add_subdirectory")},
                    {'a', QLatin1String("add_test")},
                    {'a', QLatin1String("aux_source_directory")},
                    {'b', QLatin1String("build_command")},
                    {'c', QLatin1String("create_test_sourcelist")},
                    {'d', QLatin1String("define_property")},
                    {'e', QLatin1String("enable_language")},
                    {'e', QLatin1String("enable_testing")},
                    {'e', QLatin1String("export")},
                    {'f', QLatin1String("fltk_wrap_ui")},
                    {'g', QLatin1String("get_source_file_property")},
                    {'g', QLatin1String("get_target_property")},
                    {'g', QLatin1String("get_test_property")},
                    {'i', QLatin1String("include_directories")},
                    {'i', QLatin1String("include_external_msproject")},
                    {'i', QLatin1String("include_regular_expression")},
                    {'i', QLatin1String("install")},
                    {'l', QLatin1String("link_directories")},
                    {'l', QLatin1String("link_libraries")},
                    {'l', QLatin1String("load_cache")},
                    {'p', QLatin1String("project")},
                    {'q', QLatin1String("qt_wrap_cpp")},
                    {'q', QLatin1String("qt_wrap_ui")},
                    {'r', QLatin1String("remove_definitions")},
                    {'s', QLatin1String("set_source_files_properties")},
                    {'s', QLatin1String("set_target_properties")},
                    {'s', QLatin1String("set_tests_properties")},
                    {'s', QLatin1String("source_group")},
                    {'t', QLatin1String("target_compile_definitions")},
                    {'t', QLatin1String("target_compile_features")},
                    {'t', QLatin1String("target_compile_options")},
                    {'t', QLatin1String("target_include_directories")},
                    {'t', QLatin1String("target_link_directories")},
                    {'t', QLatin1String("target_link_libraries")},
                    {'t', QLatin1String("target_link_options")},
                    {'t', QLatin1String("target_sources")},
                    {'t', QLatin1String("try_compile")},
                    {'t', QLatin1String("try_run")},
                    {'c', QLatin1String("ctest_build")},
                    {'c', QLatin1String("ctest_configure")},
                    {'c', QLatin1String("ctest_coverage")},
                    {'c', QLatin1String("ctest_empty_binary_directory")},
                    {'c', QLatin1String("ctest_memcheck")},
                    {'c', QLatin1String("ctest_read_custom_files")},
                    {'c', QLatin1String("ctest_run_script")},
                    {'c', QLatin1String("ctest_sleep")},
                    {'c', QLatin1String("ctest_start")},
                    {'c', QLatin1String("ctest_submit")},
                    {'c', QLatin1String("ctest_test")},
                    {'c', QLatin1String("ctest_update")},
                    {'c', QLatin1String("ctest_upload")},
                    {'b', QLatin1String("build_name")},
                    {'e', QLatin1String("exec_program")},
                    {'e', QLatin1String("export_library_dependencies")},
                    {'i', QLatin1String("install_files")},
                    {'i', QLatin1String("install_programs")},
                    {'i', QLatin1String("install_targets")},
                    {'l', QLatin1String("load_command")},
                    {'m', QLatin1String("make_directory")},
                    {'o', QLatin1String("output_required_files")},
                    {'r', QLatin1String("remove")},
                    {'s', QLatin1String("subdir_depends")},
                    {'s', QLatin1String("subdirs")},
                    {'u', QLatin1String("use_mangled_mesa")},
                    {'u', QLatin1String("utility_source")},
                    {'v', QLatin1String("variable_requires")},
                    {'w', QLatin1String("write_file")},
                    {'q', QLatin1String("qt5_use_modules")},
                    {'q', QLatin1String("qt5_use_package")},
                    {'q', QLatin1String("qt5_wrap_cpp")},
                    {'a', QLatin1String("and")},
                    {'o', QLatin1String("or")},
                    {'n', QLatin1String("not")},
                    {'c', QLatin1String("command")},
                    {'p', QLatin1String("policy")},
                    {'t', QLatin1String("target")},
                    {'t', QLatin1String("test")},
                    {'e', QLatin1String("exists")},
                    {'i', QLatin1String("is_newer_than")},
                    {'i', QLatin1String("is_directory")},
                    {'i', QLatin1String("is_symlink")},
                    {'i', QLatin1String("is_absolute")},
                    {'m', QLatin1String("matches")},
                    {'l', QLatin1String("less")},
                    {'g', QLatin1String("greater")},
                    {'e', QLatin1String("equal")},
                    {'l', QLatin1String("less_equal")},
                    {'g', QLatin1String("greater_equal")},
                    {'s', QLatin1String("strless")},
                    {'s', QLatin1String("strgreater")},
                    {'s', QLatin1String("strequal")},
                    {'s', QLatin1String("strless_equal")},
                    {'s', QLatin1String("strgreater_equal")},
                    {'v', QLatin1String("version_less")},
                    {'v', QLatin1String("version_greater")},
                    {'v', QLatin1String("version_equal")},
                    {'v', QLatin1String("version_less_equal")},
                    {'v', QLatin1String("version_greater_equal")},
                    {'i', QLatin1String("in_list")},
                    {'d', QLatin1String("defined")}};
  cmake_types = {};
  cmake_literals
      = {{'o', QLatin1String("on")},   {'o', QLatin1String("off")},
         {'O', QLatin1String("ON")},   {'O', QLatin1String("OFF")},
         {'t', QLatin1String("true")}, {'f', QLatin1String("false")},
         {'T', QLatin1String("TRUE")}, {'F', QLatin1String("FALSE")}};
  cmake_builtin = {{'A', QLatin1String("ALLOW_DUPLICATE_CUSTOM_TARGETS")},
                   {'A', QLatin1String("AUTOGEN_TARGETS_FOLDER")},
                   {'A', QLatin1String("AUTOMOC_TARGETS_FOLDER")},
                   {'D', QLatin1String("DEBUG_CONFIGURATIONS")},
                   {'D', QLatin1String("DISABLED_FEATURES")},
                   {'E', QLatin1String("ENABLED_FEATURES")},
                   {'E', QLatin1String("ENABLED_LANGUAGES")},
                   {'F', QLatin1String("FIND_LIBRARY_USE_LIB64_PATHS")},
                   {'F', QLatin1String("FIND_LIBRARY_USE_OPENBSD_VERSIONING")},
                   {'G', QLatin1String("GLOBAL_DEPENDS_DEBUG_MODE")},
                   {'G', QLatin1String("GLOBAL_DEPENDS_NO_CYCLES")},
                   {'I', QLatin1String("IN_TRY_COMPILE")},
                   {'P', QLatin1String("PACKAGES_FOUND")},
                   {'P', QLatin1String("PACKAGES_NOT_FOUND")},
                   {'J', QLatin1String("JOB_POOLS")},
                   {'P', QLatin1String("PREDEFINED_TARGETS_FOLDER")},
                   {'E', QLatin1String("ECLIPSE_EXTRA_NATURES")},
                   {'R', QLatin1String("REPORT_UNDEFINED_PROPERTIES")},
                   {'R', QLatin1String("RULE_LAUNCH_COMPILE")},
                   {'R', QLatin1String("RULE_LAUNCH_CUSTOM")},
                   {'R', QLatin1String("RULE_LAUNCH_LINK")},
                   {'R', QLatin1String("RULE_MESSAGES")},
                   {'T', QLatin1String("TARGET_ARCHIVES_MAY_BE_SHARED_LIBS")},
                   {'T', QLatin1String("TARGET_SUPPORTS_SHARED_LIBS")},
                   {'U', QLatin1String("USE_FOLDERS")},
                   {'A', QLatin1String("ADDITIONAL_MAKE_CLEAN_FILES")},
                   {'C', QLatin1String("CACHE_VARIABLES")},
                   {'C', QLatin1String("CLEAN_NO_CUSTOM")},
                   {'C', QLatin1String("CMAKE_CONFIGURE_DEPENDS")},
                   {'C', QLatin1String("COMPILE_DEFINITIONS")},
                   {'C', QLatin1String("COMPILE_OPTIONS")},
                   {'D', QLatin1String("DEFINITIONS")},
                   {'E', QLatin1String("EXCLUDE_FROM_ALL")},
                   {'I', QLatin1String("IMPLICIT_DEPENDS_INCLUDE_TRANSFORM")},
                   {'I', QLatin1String("INCLUDE_DIRECTORIES")},
                   {'I', QLatin1String("INCLUDE_REGULAR_EXPRESSION")},
                   {'I', QLatin1String("INTERPROCEDURAL_OPTIMIZATION")},
                   {'L', QLatin1String("LINK_DIRECTORIES")},
                   {'L', QLatin1String("LISTFILE_STACK")},
                   {'M', QLatin1String("MACROS")},
                   {'P', QLatin1String("PARENT_DIRECTORY")},
                   {'R', QLatin1String("RULE_LAUNCH_COMPILE")},
                   {'R', QLatin1String("RULE_LAUNCH_CUSTOM")},
                   {'R', QLatin1String("RULE_LAUNCH_LINK")},
                   {'T', QLatin1String("TEST_INCLUDE_FILE")},
                   {'V', QLatin1String("VARIABLES")},
                   {'A', QLatin1String("ALIASED_TARGET")},
                   {'A', QLatin1String("ARCHIVE_OUTPUT_DIRECTORY")},
                   {'A', QLatin1String("ARCHIVE_OUTPUT_NAME")},
                   {'A', QLatin1String("AUTOGEN_TARGET_DEPENDS")},
                   {'A', QLatin1String("AUTOMOC_MOC_OPTIONS")},
                   {'A', QLatin1String("AUTOMOC")},
                   {'A', QLatin1String("AUTOUIC")},
                   {'A', QLatin1String("AUTOUIC_OPTIONS")},
                   {'A', QLatin1String("AUTORCC")},
                   {'A', QLatin1String("AUTORCC_OPTIONS")},
                   {'B', QLatin1String("BUILD_WITH_INSTALL_RPATH")},
                   {'B', QLatin1String("BUNDLE_EXTENSION")},
                   {'B', QLatin1String("BUNDLE")},
                   {'C', QLatin1String("COMPATIBLE_INTERFACE_BOOL")},
                   {'C', QLatin1String("COMPATIBLE_INTERFACE_NUMBER_MAX")},
                   {'C', QLatin1String("COMPATIBLE_INTERFACE_NUMBER_MIN")},
                   {'C', QLatin1String("COMPATIBLE_INTERFACE_STRING")},
                   {'C', QLatin1String("COMPILE_DEFINITIONS")},
                   {'C', QLatin1String("COMPILE_FLAGS")},
                   {'C', QLatin1String("COMPILE_OPTIONS")},
                   {'D', QLatin1String("DEBUG_POSTFIX")},
                   {'D', QLatin1String("DEFINE_SYMBOL")},
                   {'E', QLatin1String("EchoString")},
                   {'E', QLatin1String("ENABLE_EXPORTS")},
                   {'E', QLatin1String("EXCLUDE_FROM_ALL")},
                   {'E', QLatin1String("EXCLUDE_FROM_DEFAULT_BUILD")},
                   {'E', QLatin1String("EXPORT_NAME")},
                   {'F', QLatin1String("FOLDER")},
                   {'F', QLatin1String("Fortran_FORMAT")},
                   {'F', QLatin1String("Fortran_MODULE_DIRECTORY")},
                   {'F', QLatin1String("FRAMEWORK")},
                   {'G', QLatin1String("GENERATOR_FILE_NAME")},
                   {'G', QLatin1String("GNUtoMS")},
                   {'H', QLatin1String("HAS_CXX")},
                   {'I', QLatin1String("IMPLICIT_DEPENDS_INCLUDE_TRANSFORM")},
                   {'I', QLatin1String("IMPORTED_CONFIGURATIONS")},
                   {'I', QLatin1String("IMPORTED_IMPLIB")},
                   {'I', QLatin1String("IMPORTED_LINK_DEPENDENT_LIBRARIES")},
                   {'I', QLatin1String("IMPORTED_LINK_INTERFACE_LANGUAGES")},
                   {'I', QLatin1String("IMPORTED_LINK_INTERFACE_LIBRARIES")},
                   {'I', QLatin1String("IMPORTED_LINK_INTERFACE_MULTIPLICITY")},
                   {'I', QLatin1String("IMPORTED_LOCATION")},
                   {'I', QLatin1String("IMPORTED_NO_SONAME")},
                   {'I', QLatin1String("IMPORTED")},
                   {'I', QLatin1String("IMPORTED_SONAME")},
                   {'I', QLatin1String("IMPORT_PREFIX")},
                   {'I', QLatin1String("IMPORT_SUFFIX")},
                   {'I', QLatin1String("INCLUDE_DIRECTORIES")},
                   {'I', QLatin1String("INSTALL_NAME_DIR")},
                   {'I', QLatin1String("INSTALL_RPATH")},
                   {'I', QLatin1String("INSTALL_RPATH_USE_LINK_PATH")},
                   {'I', QLatin1String("INTERFACE_AUTOUIC_OPTIONS")},
                   {'I', QLatin1String("INTERFACE_COMPILE_DEFINITIONS")},
                   {'I', QLatin1String("INTERFACE_COMPILE_OPTIONS")},
                   {'I', QLatin1String("INTERFACE_INCLUDE_DIRECTORIES")},
                   {'I', QLatin1String("INTERFACE_LINK_LIBRARIES")},
                   {'I', QLatin1String("INTERFACE_POSITION_INDEPENDENT_CODE")},
                   {'I', QLatin1String("INTERFACE_SYSTEM_INCLUDE_DIRECTORIES")},
                   {'I', QLatin1String("INTERPROCEDURAL_OPTIMIZATION")},
                   {'J', QLatin1String("JOB_POOL_COMPILE")},
                   {'J', QLatin1String("JOB_POOL_LINK")},
                   {'L', QLatin1String("LABELS")},
                   {'L', QLatin1String("LIBRARY_OUTPUT_DIRECTORY")},
                   {'L', QLatin1String("LIBRARY_OUTPUT_NAME")},
                   {'L', QLatin1String("LINK_DEPENDS_NO_SHARED")},
                   {'L', QLatin1String("LINK_DEPENDS")},
                   {'L', QLatin1String("LINKER_LANGUAGE")},
                   {'L', QLatin1String("LINK_FLAGS")},
                   {'L', QLatin1String("LINK_INTERFACE_LIBRARIES")},
                   {'L', QLatin1String("LINK_INTERFACE_MULTIPLICITY")},
                   {'L', QLatin1String("LINK_LIBRARIES")},
                   {'L', QLatin1String("LINK_SEARCH_END_STATIC")},
                   {'L', QLatin1String("LINK_SEARCH_START_STATIC")},
                   {'L', QLatin1String("LOCATION")},
                   {'M', QLatin1String("MACOSX_BUNDLE_INFO_PLIST")},
                   {'M', QLatin1String("MACOSX_BUNDLE")},
                   {'M', QLatin1String("MACOSX_FRAMEWORK_INFO_PLIST")},
                   {'M', QLatin1String("MACOSX_RPATH")},
                   //        {'N', QLatin1String("NAME")},
                   {'N', QLatin1String("NO_SONAME")},
                   {'N', QLatin1String("NO_SYSTEM_FROM_IMPORTED")},
                   {'O', QLatin1String("OSX_ARCHITECTURES")},
                   {'O', QLatin1String("OUTPUT_NAME")},
                   {'P', QLatin1String("PDB_NAME")},
                   {'P', QLatin1String("PDB_OUTPUT_DIRECTORY")},
                   {'P', QLatin1String("POSITION_INDEPENDENT_CODE")},
                   {'P', QLatin1String("POST_INSTALL_SCRIPT")},
                   {'P', QLatin1String("PREFIX")},
                   {'P', QLatin1String("PROPERTY")},
                   {'P', QLatin1String("PRE_INSTALL_SCRIPT")},
                   {'P', QLatin1String("PRIVATE_HEADER")},
                   {'P', QLatin1String("PROJECT_LABEL")},
                   {'P', QLatin1String("PUBLIC_HEADER")},
                   {'R', QLatin1String("RESOURCE")},
                   {'R', QLatin1String("RULE_LAUNCH_COMPILE")},
                   {'R', QLatin1String("RULE_LAUNCH_CUSTOM")},
                   {'R', QLatin1String("RULE_LAUNCH_LINK")},
                   {'R', QLatin1String("RUNTIME_OUTPUT_DIRECTORY")},
                   {'R', QLatin1String("RUNTIME_OUTPUT_NAME")},
                   {'S', QLatin1String("SKIP_BUILD_RPATH")},
                   {'S', QLatin1String("SOURCES")},
                   {'S', QLatin1String("SOVERSION")},
                   {'S', QLatin1String("STATIC_LIBRARY_FLAGS")},
                   {'S', QLatin1String("SUFFIX")},
                   {'T', QLatin1String("TARGET")},
                   {'T', QLatin1String("TYPE")},
                   {'V', QLatin1String("VERSION")},
                   {'V', QLatin1String("VISIBILITY_INLINES_HIDDEN")},
                   {'V', QLatin1String("VS_DOTNET_REFERENCES")},
                   {'V', QLatin1String("VS_DOTNET_TARGET_FRAMEWORK_VERSION")},
                   {'V', QLatin1String("VS_GLOBAL_KEYWORD")},
                   {'V', QLatin1String("VS_GLOBAL_PROJECT_TYPES")},
                   {'V', QLatin1String("VS_GLOBAL_ROOTNAMESPACE")},
                   {'V', QLatin1String("VS_KEYWORD")},
                   {'V', QLatin1String("VS_SCC_AUXPATH")},
                   {'V', QLatin1String("VS_SCC_LOCALPATH")},
                   {'V', QLatin1String("VS_SCC_PROJECTNAME")},
                   {'V', QLatin1String("VS_SCC_PROVIDER")},
                   {'V', QLatin1String("VS_WINRT_EXTENSIONS")},
                   {'V', QLatin1String("VS_WINRT_REFERENCES")},
                   {'W', QLatin1String("WIN32_EXECUTABLE")},
                   {'A', QLatin1String("ATTACHED_FILES_ON_FAIL")},
                   {'A', QLatin1String("ATTACHED_FILES")},
                   {'C', QLatin1String("COST")},
                   {'D', QLatin1String("DEPENDS")},
                   {'E', QLatin1String("ENVIRONMENT")},
                   {'F', QLatin1String("FAIL_REGULAR_EXPRESSION")},
                   {'L', QLatin1String("LABELS")},
                   {'M', QLatin1String("MEASUREMENT")},
                   {'P', QLatin1String("PASS_REGULAR_EXPRESSION")},
                   {'P', QLatin1String("PROCESSORS")},
                   {'R', QLatin1String("REQUIRED_FILES")},
                   {'R', QLatin1String("RESOURCE_LOCK")},
                   {'R', QLatin1String("RUN_SERIAL")},
                   {'S', QLatin1String("SKIP_RETURN_CODE")},
                   {'T', QLatin1String("TIMEOUT")},
                   {'W', QLatin1String("WILL_FAIL")},
                   {'W', QLatin1String("WORKING_DIRECTORY")},
                   {'A', QLatin1String("ABSTRACT")},
                   {'A', QLatin1String("AUTOUIC_OPTIONS")},
                   {'A', QLatin1String("AUTORCC_OPTIONS")},
                   {'C', QLatin1String("COMPILE_DEFINITIONS")},
                   {'C', QLatin1String("COMPILE_FLAGS")},
                   {'E', QLatin1String("EXTERNAL_OBJECT")},
                   {'F', QLatin1String("Fortran_FORMAT")},
                   {'G', QLatin1String("GENERATED")},
                   {'H', QLatin1String("HEADER_FILE_ONLY")},
                   {'K', QLatin1String("KEEP_EXTENSION")},
                   {'L', QLatin1String("LABELS")},
                   //        {'L', QLatin1String("LANGUAGE")},
                   {'L', QLatin1String("LOCATION")},
                   {'M', QLatin1String("MACOSX_PACKAGE_LOCATION")},
                   {'O', QLatin1String("OBJECT_DEPENDS")},
                   {'O', QLatin1String("OBJECT_OUTPUTS")},
                   {'S', QLatin1String("SYMBOLIC")},
                   {'W', QLatin1String("WRAP_EXCLUDE")},
                   {'A', QLatin1String("ADVANCED")},
                   {'H', QLatin1String("HELPSTRING")},
                   {'M', QLatin1String("MODIFIED")},
                   {'S', QLatin1String("STRINGS")},
                   {'T', QLatin1String("TYPE")},
                   {'V', QLatin1String("VALUE")}};
  cmake_other
      = {{'C', QLatin1String("CMAKE_ARGC")},
         {'C', QLatin1String("CMAKE_ARGV0")},
         {'C', QLatin1String("CMAKE_AR")},
         {'C', QLatin1String("CMAKE_BINARY_DIR")},
         {'C', QLatin1String("CMAKE_BUILD_TOOL")},
         {'C', QLatin1String("CMAKE_CACHEFILE_DIR")},
         {'C', QLatin1String("CMAKE_CACHE_MAJOR_VERSION")},
         {'C', QLatin1String("CMAKE_CACHE_MINOR_VERSION")},
         {'C', QLatin1String("CMAKE_CACHE_PATCH_VERSION")},
         {'C', QLatin1String("CMAKE_CFG_INTDIR")},
         {'C', QLatin1String("CMAKE_COMMAND")},
         {'C', QLatin1String("CMAKE_CROSSCOMPILING")},
         {'C', QLatin1String("CMAKE_CTEST_COMMAND")},
         {'C', QLatin1String("CMAKE_CURRENT_BINARY_DIR")},
         {'C', QLatin1String("CMAKE_CURRENT_LIST_DIR")},
         {'C', QLatin1String("CMAKE_CURRENT_LIST_FILE")},
         {'C', QLatin1String("CMAKE_CURRENT_LIST_LINE")},
         {'C', QLatin1String("CMAKE_CURRENT_SOURCE_DIR")},
         {'C', QLatin1String("CMAKE_DL_LIBS")},
         {'C', QLatin1String("CMAKE_EDIT_COMMAND")},
         {'C', QLatin1String("CMAKE_EXECUTABLE_SUFFIX")},
         {'C', QLatin1String("CMAKE_EXTRA_GENERATOR")},
         {'C', QLatin1String("CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES")},
         {'C', QLatin1String("CMAKE_GENERATOR")},
         {'C', QLatin1String("CMAKE_GENERATOR_TOOLSET")},
         {'C', QLatin1String("CMAKE_HOME_DIRECTORY")},
         {'C', QLatin1String("CMAKE_IMPORT_LIBRARY_PREFIX")},
         {'C', QLatin1String("CMAKE_IMPORT_LIBRARY_SUFFIX")},
         {'C', QLatin1String("CMAKE_JOB_POOL_COMPILE")},
         {'C', QLatin1String("CMAKE_JOB_POOL_LINK")},
         {'C', QLatin1String("CMAKE_LINK_LIBRARY_SUFFIX")},
         {'C', QLatin1String("CMAKE_MAJOR_VERSION")},
         {'C', QLatin1String("CMAKE_MAKE_PROGRAM")},
         {'C', QLatin1String("CMAKE_MINIMUM_REQUIRED_VERSION")},
         {'C', QLatin1String("CMAKE_MINOR_VERSION")},
         {'C', QLatin1String("CMAKE_PARENT_LIST_FILE")},
         {'C', QLatin1String("CMAKE_PATCH_VERSION")},
         {'C', QLatin1String("CMAKE_PROJECT_NAME")},
         {'C', QLatin1String("CMAKE_RANLIB")},
         {'C', QLatin1String("CMAKE_ROOT")},
         {'C', QLatin1String("CMAKE_SCRIPT_MODE_FILE")},
         {'C', QLatin1String("CMAKE_SHARED_LIBRARY_PREFIX")},
         {'C', QLatin1String("CMAKE_SHARED_LIBRARY_SUFFIX")},
         {'C', QLatin1String("CMAKE_SHARED_MODULE_PREFIX")},
         {'C', QLatin1String("CMAKE_SHARED_MODULE_SUFFIX")},
         {'C', QLatin1String("CMAKE_SIZEOF_VOID_P")},
         {'C', QLatin1String("CMAKE_SKIP_INSTALL_RULES")},
         {'C', QLatin1String("CMAKE_SKIP_RPATH")},
         {'C', QLatin1String("CMAKE_SOURCE_DIR")},
         {'C', QLatin1String("CMAKE_STANDARD_LIBRARIES")},
         {'C', QLatin1String("CMAKE_STATIC_LIBRARY_PREFIX")},
         {'C', QLatin1String("CMAKE_STATIC_LIBRARY_SUFFIX")},
         {'C', QLatin1String("CMAKE_TOOLCHAIN_FILE")},
         {'C', QLatin1String("CMAKE_TWEAK_VERSION")},
         {'C', QLatin1String("CMAKE_VERBOSE_MAKEFILE")},
         {'C', QLatin1String("CMAKE_VERSION")},
         {'C', QLatin1String("CMAKE_VS_DEVENV_COMMAND")},
         {'C', QLatin1String("CMAKE_VS_INTEL_Fortran_PROJECT_VERSION")},
         {'C', QLatin1String("CMAKE_VS_MSBUILD_COMMAND")},
         {'C', QLatin1String("CMAKE_VS_MSDEV_COMMAND")},
         {'C', QLatin1String("CMAKE_VS_PLATFORM_TOOLSET")},
         {'C', QLatin1String("CMAKE_XCODE_PLATFORM_TOOLSET")},
         {'P', QLatin1String("PROJECT_BINARY_DIR")},
         //        {'P', QLatin1String("PROJECT_NAME")},
         {'P', QLatin1String("PROJECT_SOURCE_DIR")},
         {'P', QLatin1String("PROJECT_VERSION")},
         {'P', QLatin1String("PROJECT_VERSION_MAJOR")},
         {'P', QLatin1String("PROJECT_VERSION_MINOR")},
         {'P', QLatin1String("PROJECT_VERSION_PATCH")},
         {'P', QLatin1String("PROJECT_VERSION_TWEAK")},
         {'B', QLatin1String("BUILD_SHARED_LIBS")},
         {'C', QLatin1String("CMAKE_ABSOLUTE_DESTINATION_FILES")},
         {'C', QLatin1String("CMAKE_APPBUNDLE_PATH")},
         {'C', QLatin1String("CMAKE_AUTOMOC_RELAXED_MODE")},
         {'C', QLatin1String("CMAKE_BACKWARDS_COMPATIBILITY")},
         {'C', QLatin1String("CMAKE_BUILD_TYPE")},
         {'C', QLatin1String("CMAKE_COLOR_MAKEFILE")},
         {'C', QLatin1String("CMAKE_CONFIGURATION_TYPES")},
         {'C', QLatin1String("CMAKE_DEBUG_TARGET_PROPERTIES")},
         {'C', QLatin1String("CMAKE_ERROR_DEPRECATED")},
         {'C', QLatin1String("CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION")},
         {'C', QLatin1String("CMAKE_SYSROOT")},
         {'C', QLatin1String("CMAKE_FIND_LIBRARY_PREFIXES")},
         {'C', QLatin1String("CMAKE_FIND_LIBRARY_SUFFIXES")},
         {'C', QLatin1String("CMAKE_FIND_NO_INSTALL_PREFIX")},
         {'C', QLatin1String("CMAKE_FIND_PACKAGE_WARN_NO_MODULE")},
         {'C', QLatin1String("CMAKE_FIND_ROOT_PATH")},
         {'C', QLatin1String("CMAKE_FIND_ROOT_PATH_MODE_INCLUDE")},
         {'C', QLatin1String("CMAKE_FIND_ROOT_PATH_MODE_LIBRARY")},
         {'C', QLatin1String("CMAKE_FIND_ROOT_PATH_MODE_PACKAGE")},
         {'C', QLatin1String("CMAKE_FIND_ROOT_PATH_MODE_PROGRAM")},
         {'C', QLatin1String("CMAKE_FRAMEWORK_PATH")},
         {'C', QLatin1String("CMAKE_IGNORE_PATH")},
         {'C', QLatin1String("CMAKE_INCLUDE_PATH")},
         {'C', QLatin1String("CMAKE_INCLUDE_DIRECTORIES_BEFORE")},
         {'C', QLatin1String("CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE")},
         {'C', QLatin1String("CMAKE_INSTALL_DEFAULT_COMPONENT_NAME")},
         {'C', QLatin1String("CMAKE_INSTALL_PREFIX")},
         {'C', QLatin1String("CMAKE_LIBRARY_PATH")},
         {'C', QLatin1String("CMAKE_MFC_FLAG")},
         {'C', QLatin1String("CMAKE_MODULE_PATH")},
         {'C', QLatin1String("CMAKE_NOT_USING_CONFIG_FLAGS")},
         {'C', QLatin1String("CMAKE_PREFIX_PATH")},
         {'C', QLatin1String("CMAKE_PROGRAM_PATH")},
         {'C', QLatin1String("CMAKE_SKIP_INSTALL_ALL_DEPENDENCY")},
         {'C', QLatin1String("CMAKE_STAGING_PREFIX")},
         {'C', QLatin1String("CMAKE_SYSTEM_IGNORE_PATH")},
         {'C', QLatin1String("CMAKE_SYSTEM_INCLUDE_PATH")},
         {'C', QLatin1String("CMAKE_SYSTEM_LIBRARY_PATH")},
         {'C', QLatin1String("CMAKE_SYSTEM_PREFIX_PATH")},
         {'C', QLatin1String("CMAKE_SYSTEM_PROGRAM_PATH")},
         {'C', QLatin1String("CMAKE_USER_MAKE_RULES_OVERRIDE")},
         {'C', QLatin1String("CMAKE_WARN_DEPRECATED")},
         {'C', QLatin1String("CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION")},
         {'A', QLatin1String("APPLE")},
         {'B', QLatin1String("BORLAND")},
         {'C', QLatin1String("CMAKE_CL_64")},
         {'C', QLatin1String("CMAKE_COMPILER_2005")},
         {'C', QLatin1String("CMAKE_HOST_APPLE")},
         {'C', QLatin1String("CMAKE_HOST_SYSTEM_NAME")},
         {'C', QLatin1String("CMAKE_HOST_SYSTEM_PROCESSOR")},
         {'C', QLatin1String("CMAKE_HOST_SYSTEM")},
         {'C', QLatin1String("CMAKE_HOST_SYSTEM_VERSION")},
         {'C', QLatin1String("CMAKE_HOST_UNIX")},
         {'C', QLatin1String("CMAKE_HOST_WIN32")},
         {'C', QLatin1String("CMAKE_LIBRARY_ARCHITECTURE_REGEX")},
         {'C', QLatin1String("CMAKE_LIBRARY_ARCHITECTURE")},
         {'C', QLatin1String("CMAKE_OBJECT_PATH_MAX")},
         {'C', QLatin1String("CMAKE_SYSTEM_NAME")},
         {'C', QLatin1String("CMAKE_SYSTEM_PROCESSOR")},
         {'C', QLatin1String("CMAKE_SYSTEM")},
         {'C', QLatin1String("CMAKE_SYSTEM_VERSION")},
         {'C', QLatin1String("CYGWIN")},
         {'E', QLatin1String("ENV")},
         {'M', QLatin1String("MSVC10")},
         {'M', QLatin1String("MSVC11")},
         {'M', QLatin1String("MSVC12")},
         {'M', QLatin1String("MSVC60")},
         {'M', QLatin1String("MSVC70")},
         {'M', QLatin1String("MSVC71")},
         {'M', QLatin1String("MSVC80")},
         {'M', QLatin1String("MSVC90")},
         {'M', QLatin1String("MSVC_IDE")},
         {'M', QLatin1String("MSVC")},
         {'M', QLatin1String("MSVC_VERSION")},
         {'U', QLatin1String("UNIX")},
         {'W', QLatin1String("WIN32")},
         {'X', QLatin1String("XCODE_VERSION")},
         {'C', QLatin1String("CMAKE_ARCHIVE_OUTPUT_DIRECTORY")},
         {'C', QLatin1String("CMAKE_AUTOMOC_MOC_OPTIONS")},
         {'C', QLatin1String("CMAKE_AUTOMOC")},
         {'C', QLatin1String("CMAKE_AUTORCC")},
         {'C', QLatin1String("CMAKE_AUTORCC_OPTIONS")},
         {'C', QLatin1String("CMAKE_AUTOUIC")},
         {'C', QLatin1String("CMAKE_AUTOUIC_OPTIONS")},
         {'C', QLatin1String("CMAKE_BUILD_WITH_INSTALL_RPATH")},
         {'C', QLatin1String("CMAKE_DEBUG_POSTFIX")},
         {'C', QLatin1String("CMAKE_EXE_LINKER_FLAGS")},
         {'C', QLatin1String("CMAKE_Fortran_FORMAT")},
         {'C', QLatin1String("CMAKE_Fortran_MODULE_DIRECTORY")},
         {'C', QLatin1String("CMAKE_GNUtoMS")},
         {'C', QLatin1String("CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE")},
         {'C', QLatin1String("CMAKE_INCLUDE_CURRENT_DIR")},
         {'C', QLatin1String("CMAKE_INSTALL_NAME_DIR")},
         {'C', QLatin1String("CMAKE_INSTALL_RPATH")},
         {'C', QLatin1String("CMAKE_INSTALL_RPATH_USE_LINK_PATH")},
         {'C', QLatin1String("CMAKE_LIBRARY_OUTPUT_DIRECTORY")},
         {'C', QLatin1String("CMAKE_LIBRARY_PATH_FLAG")},
         {'C', QLatin1String("CMAKE_LINK_DEF_FILE_FLAG")},
         {'C', QLatin1String("CMAKE_LINK_DEPENDS_NO_SHARED")},
         {'C', QLatin1String("CMAKE_LINK_INTERFACE_LIBRARIES")},
         {'C', QLatin1String("CMAKE_LINK_LIBRARY_FILE_FLAG")},
         {'C', QLatin1String("CMAKE_LINK_LIBRARY_FLAG")},
         {'C', QLatin1String("CMAKE_MACOSX_BUNDLE")},
         {'C', QLatin1String("CMAKE_MACOSX_RPATH")},
         {'C', QLatin1String("CMAKE_MODULE_LINKER_FLAGS")},
         {'C', QLatin1String("CMAKE_NO_BUILTIN_CHRPATH")},
         {'C', QLatin1String("CMAKE_NO_SYSTEM_FROM_IMPORTED")},
         {'C', QLatin1String("CMAKE_OSX_ARCHITECTURES")},
         {'C', QLatin1String("CMAKE_OSX_DEPLOYMENT_TARGET")},
         {'C', QLatin1String("CMAKE_OSX_SYSROOT")},
         {'C', QLatin1String("CMAKE_PDB_OUTPUT_DIRECTORY")},
         {'C', QLatin1String("CMAKE_POSITION_INDEPENDENT_CODE")},
         {'C', QLatin1String("CMAKE_RUNTIME_OUTPUT_DIRECTORY")},
         {'C', QLatin1String("CMAKE_SHARED_LINKER_FLAGS")},
         {'C', QLatin1String("CMAKE_SKIP_BUILD_RPATH")},
         {'C', QLatin1String("CMAKE_SKIP_INSTALL_RPATH")},
         {'C', QLatin1String("CMAKE_STATIC_LINKER_FLAGS")},
         {'C', QLatin1String("CMAKE_TRY_COMPILE_CONFIGURATION")},
         {'C', QLatin1String("CMAKE_USE_RELATIVE_PATHS")},
         {'C', QLatin1String("CMAKE_VISIBILITY_INLINES_HIDDEN")},
         {'C', QLatin1String("CMAKE_WIN32_EXECUTABLE")},
         {'E', QLatin1String("EXECUTABLE_OUTPUT_PATH")},
         {'L', QLatin1String("LIBRARY_OUTPUT_PATH")},
         {'C', QLatin1String("CMAKE_Fortran_MODDIR_DEFAULT")},
         {'C', QLatin1String("CMAKE_Fortran_MODDIR_FLAG")},
         {'C', QLatin1String("CMAKE_Fortran_MODOUT_FLAG")},
         {'C', QLatin1String("CMAKE_INTERNAL_PLATFORM_ABI")},
         {'C', QLatin1String("CPACK_ABSOLUTE_DESTINATION_FILES")},
         {'C', QLatin1String("CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY")},
         {'C', QLatin1String("CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION")},
         {'C', QLatin1String("CPACK_INCLUDE_TOPLEVEL_DIRECTORY")},
         {'C', QLatin1String("CPACK_INSTALL_SCRIPT")},
         {'C', QLatin1String("CPACK_PACKAGING_INSTALL_PREFIX")},
         {'C', QLatin1String("CPACK_SET_DESTDIR")},
         {'C', QLatin1String("CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION")}};
}

void loadCMakeData(QMultiHash<char, QLatin1String> &types,
                   QMultiHash<char, QLatin1String> &keywords,
                   QMultiHash<char, QLatin1String> &builtin,
                   QMultiHash<char, QLatin1String> &literals,
                   QMultiHash<char, QLatin1String> &other)
{
  if (!cmakeDataInitialized)
  {
    initCMakeData();
    cmakeDataInitialized = true;
  }
  types = cmake_types;
  keywords = cmake_keywords;
  builtin = cmake_builtin;
  literals = cmake_literals;
  other = cmake_other;
}

/********************************************************/
/***   MAKE DATA   ***************************************/
/********************************************************/
static bool makeDataInitialized = false;
static QMultiHash<char, QLatin1String> make_keywords;
static QMultiHash<char, QLatin1String> make_types;
static QMultiHash<char, QLatin1String> make_literals;
static QMultiHash<char, QLatin1String> make_builtin;
static QMultiHash<char, QLatin1String> make_other;
void initMakeData()
{
  make_keywords
      = {{'i', QLatin1String("include")},  {'d', QLatin1String("define")},
         {'e', QLatin1String("else")},     {'e', QLatin1String("endef")},
         {'e', QLatin1String("endif")},    {'e', QLatin1String("export")},
         {'i', QLatin1String("ifn?def")},  {'i', QLatin1String("ifn?eq")},
         {'i', QLatin1String("include")},  {'o', QLatin1String("override")},
         {'p', QLatin1String("private")},  {'s', QLatin1String("sinclude")},
         {'u', QLatin1String("undefine")}, {'u', QLatin1String("unexport")},
         {'v', QLatin1String("vpath")}};
  make_types
      = {{'a', QLatin1String("addsuffix")},  {'a', QLatin1String("abspath")},
         {'a', QLatin1String("and")},        {'a', QLatin1String("ar")},
         {'b', QLatin1String("basename")},   {'c', QLatin1String("call")},
         {'d', QLatin1String("dir")},        {'e', QLatin1String("error")},
         {'e', QLatin1String("eval")},       {'f', QLatin1String("file")},
         {'f', QLatin1String("filter")},     {'f', QLatin1String("find")},
         {'f', QLatin1String("findstring")}, {'f', QLatin1String("firstword")},
         {'f', QLatin1String("flavor")},     {'f', QLatin1String("foreach")},
         {'g', QLatin1String("guile")},      {'i', QLatin1String("if")},
         {'i', QLatin1String("info")},       {'i', QLatin1String("install")},
         {'j', QLatin1String("join")},       {'l', QLatin1String("lastword")},
         {'l', QLatin1String("load")},       {'n', QLatin1String("notdir")},
         {'o', QLatin1String("or")},         {'o', QLatin1String("origin")},
         {'p', QLatin1String("patsubst")},   {'r', QLatin1String("ranlib")},
         {'r', QLatin1String("realpath")},   {'r', QLatin1String("rm")},
         {'s', QLatin1String("shell")},      {'s', QLatin1String("sort")},
         {'s', QLatin1String("strip")},      {'s', QLatin1String("subst")},
         {'s', QLatin1String("suffix")},     {'v', QLatin1String("value")},
         {'w', QLatin1String("warning")},    {'w', QLatin1String("wildcard")},
         {'w', QLatin1String("word")}};
  make_literals = {
      {'t', QLatin1String("true")},
      {'f', QLatin1String("false")},
  };
  make_builtin = {};
  make_other = {
      {'C', QLatin1String("CFLAGS")},
      {'L', QLatin1String("LIBS")},
      {'P', QLatin1String("PREFIX")},
  };
}

void loadMakeData(QMultiHash<char, QLatin1String> &types,
                  QMultiHash<char, QLatin1String> &keywords,
                  QMultiHash<char, QLatin1String> &builtin,
                  QMultiHash<char, QLatin1String> &literals,
                  QMultiHash<char, QLatin1String> &other)
{
  if (!makeDataInitialized)
  {
    initMakeData();
    makeDataInitialized = true;
  }
  types = make_types;
  keywords = make_keywords;
  builtin = make_builtin;
  literals = make_literals;
  other = make_other;
}

void loadAsmData(QMultiHash<char, QLatin1String> &types,
                 QMultiHash<char, QLatin1String> &keywords,
                 QMultiHash<char, QLatin1String> &builtin,
                 QMultiHash<char, QLatin1String> &literals,
                 QMultiHash<char, QLatin1String> &other)
{
  Q_UNUSED(literals);
  types = {{'i', QLatin1String("ip")},      {'e', QLatin1String("eip")},
           {'r', QLatin1String("rip")},     {'a', QLatin1String("al")},
           {'a', QLatin1String("ah")},      {'b', QLatin1String("bl")},
           {'b', QLatin1String("bh")},      {'c', QLatin1String("cl")},
           {'c', QLatin1String("ch")},      {'d', QLatin1String("dl")},
           {'d', QLatin1String("dh")},      {'s', QLatin1String("sil")},
           {'d', QLatin1String("dil")},     {'b', QLatin1String("bpl")},
           {'s', QLatin1String("spl")},     {'r', QLatin1String("r8b")},
           {'r', QLatin1String("r9b")},     {'r', QLatin1String("r10b")},
           {'r', QLatin1String("r11b")},    {'r', QLatin1String("r12b")},
           {'r', QLatin1String("r13b")},    {'r', QLatin1String("r14b")},
           {'r', QLatin1String("r15b")},    {'b', QLatin1String("bx")},
           {'c', QLatin1String("cx")},      {'d', QLatin1String("dx")},
           {'s', QLatin1String("si")},      {'d', QLatin1String("di")},
           {'b', QLatin1String("bp")},      {'s', QLatin1String("sp")},
           {'r', QLatin1String("r8w")},     {'r', QLatin1String("r9w")},
           {'r', QLatin1String("r10w")},    {'r', QLatin1String("r11w")},
           {'r', QLatin1String("r12w")},    {'r', QLatin1String("r13w")},
           {'r', QLatin1String("r14w")},    {'r', QLatin1String("r15w")},
           {'e', QLatin1String("eax")},     {'e', QLatin1String("ebx")},
           {'e', QLatin1String("ecx")},     {'e', QLatin1String("edx")},
           {'e', QLatin1String("esi")},     {'e', QLatin1String("edi")},
           {'e', QLatin1String("ebp")},     {'e', QLatin1String("esp")},
           {'e', QLatin1String("eip")},     {'r', QLatin1String("r8d")},
           {'r', QLatin1String("r9d")},     {'r', QLatin1String("r10d")},
           {'r', QLatin1String("r11d")},    {'r', QLatin1String("r12d")},
           {'r', QLatin1String("r13d")},    {'r', QLatin1String("r14d")},
           {'r', QLatin1String("r15d")},    {'r', QLatin1String("rax")},
           {'r', QLatin1String("rbx")},     {'r', QLatin1String("rcx")},
           {'r', QLatin1String("rdx")},     {'r', QLatin1String("rsi")},
           {'r', QLatin1String("rdi")},     {'r', QLatin1String("rbp")},
           {'r', QLatin1String("rsp")},     {'r', QLatin1String("r8")},
           {'r', QLatin1String("r9")},      {'r', QLatin1String("r10")},
           {'r', QLatin1String("r11")},     {'r', QLatin1String("r12")},
           {'r', QLatin1String("r13")},     {'r', QLatin1String("r14")},
           {'r', QLatin1String("r15")},     {'d', QLatin1String("ds")},
           {'e', QLatin1String("es")},      {'f', QLatin1String("fs")},
           {'g', QLatin1String("gs")},      {'s', QLatin1String("ss")},
           {'s', QLatin1String("st0")},     {'s', QLatin1String("st1")},
           {'s', QLatin1String("st2")},     {'s', QLatin1String("st3")},
           {'s', QLatin1String("st4")},     {'s', QLatin1String("st5")},
           {'s', QLatin1String("st6")},     {'s', QLatin1String("st7")},
           {'m', QLatin1String("mm0")},     {'m', QLatin1String("mm1")},
           {'m', QLatin1String("mm2")},     {'m', QLatin1String("mm3")},
           {'m', QLatin1String("mm4")},     {'m', QLatin1String("mm5")},
           {'m', QLatin1String("mm6")},     {'m', QLatin1String("mm7")},
           {'x', QLatin1String("xmm0")},    {'x', QLatin1String("xmm1")},
           {'x', QLatin1String("xmm2")},    {'x', QLatin1String("xmm3")},
           {'x', QLatin1String("xmm4")},    {'x', QLatin1String("xmm5")},
           {'x', QLatin1String("xmm6")},    {'x', QLatin1String("xmm7")},
           {'x', QLatin1String("xmm8")},    {'x', QLatin1String("xmm9")},
           {'x', QLatin1String("xmm10")},   {'x', QLatin1String("xmm11")},
           {'x', QLatin1String("xmm12")},   {'x', QLatin1String("xmm13")},
           {'x', QLatin1String("xmm14")},   {'x', QLatin1String("xmm15")},
           {'x', QLatin1String("xmm16")},   {'x', QLatin1String("xmm17")},
           {'x', QLatin1String("xmm18")},   {'x', QLatin1String("xmm19")},
           {'x', QLatin1String("xmm20")},   {'x', QLatin1String("xmm21")},
           {'x', QLatin1String("xmm22")},   {'x', QLatin1String("xmm23")},
           {'x', QLatin1String("xmm24")},   {'x', QLatin1String("xmm25")},
           {'x', QLatin1String("xmm26")},   {'x', QLatin1String("xmm27")},
           {'x', QLatin1String("xmm28")},   {'x', QLatin1String("xmm29")},
           {'x', QLatin1String("xmm30")},   {'x', QLatin1String("xmm31")},
           {'y', QLatin1String("ymm0")},    {'y', QLatin1String("ymm1")},
           {'y', QLatin1String("ymm2")},    {'y', QLatin1String("ymm3")},
           {'y', QLatin1String("ymm4")},    {'y', QLatin1String("ymm5")},
           {'y', QLatin1String("ymm6")},    {'y', QLatin1String("ymm7")},
           {'y', QLatin1String("ymm8")},    {'y', QLatin1String("ymm9")},
           {'y', QLatin1String("ymm10")},   {'y', QLatin1String("ymm11")},
           {'y', QLatin1String("ymm12")},   {'y', QLatin1String("ymm13")},
           {'y', QLatin1String("ymm14")},   {'y', QLatin1String("ymm15")},
           {'y', QLatin1String("ymm16")},   {'y', QLatin1String("ymm17")},
           {'y', QLatin1String("ymm18")},   {'y', QLatin1String("ymm19")},
           {'y', QLatin1String("ymm20")},   {'y', QLatin1String("ymm21")},
           {'y', QLatin1String("ymm22")},   {'y', QLatin1String("ymm23")},
           {'y', QLatin1String("ymm24")},   {'y', QLatin1String("ymm25")},
           {'y', QLatin1String("ymm26")},   {'y', QLatin1String("ymm27")},
           {'y', QLatin1String("ymm28")},   {'y', QLatin1String("ymm29")},
           {'y', QLatin1String("ymm30")},   {'y', QLatin1String("ymm31")},
           {'z', QLatin1String("zmm0")},    {'z', QLatin1String("zmm1")},
           {'z', QLatin1String("zmm2")},    {'z', QLatin1String("zmm3")},
           {'z', QLatin1String("zmm4")},    {'z', QLatin1String("zmm5")},
           {'z', QLatin1String("zmm6")},    {'z', QLatin1String("zmm7")},
           {'z', QLatin1String("zmm8")},    {'z', QLatin1String("zmm9")},
           {'z', QLatin1String("zmm10")},   {'z', QLatin1String("zmm11")},
           {'z', QLatin1String("zmm12")},   {'z', QLatin1String("zmm13")},
           {'z', QLatin1String("zmm14")},   {'z', QLatin1String("zmm15")},
           {'z', QLatin1String("zmm16")},   {'z', QLatin1String("zmm17")},
           {'z', QLatin1String("zmm18")},   {'z', QLatin1String("zmm19")},
           {'z', QLatin1String("zmm20")},   {'z', QLatin1String("zmm21")},
           {'z', QLatin1String("zmm22")},   {'z', QLatin1String("zmm23")},
           {'z', QLatin1String("zmm24")},   {'z', QLatin1String("zmm25")},
           {'z', QLatin1String("zmm26")},   {'z', QLatin1String("zmm27")},
           {'z', QLatin1String("zmm28")},   {'z', QLatin1String("zmm29")},
           {'z', QLatin1String("zmm30")},   {'z', QLatin1String("zmm31")},
           {'k', QLatin1String("k0")},      {'k', QLatin1String("k1")},
           {'k', QLatin1String("k2")},      {'k', QLatin1String("k3")},
           {'k', QLatin1String("k4")},      {'k', QLatin1String("k5")},
           {'k', QLatin1String("k6")},      {'k', QLatin1String("k7")},
           {'b', QLatin1String("bnd0")},    {'b', QLatin1String("bnd1")},
           {'b', QLatin1String("bnd2")},    {'b', QLatin1String("bnd3")},
           {'c', QLatin1String("cr0")},     {'c', QLatin1String("cr1")},
           {'c', QLatin1String("cr2")},     {'c', QLatin1String("cr3")},
           {'c', QLatin1String("cr4")},     {'c', QLatin1String("cr8")},
           {'d', QLatin1String("dr0")},     {'d', QLatin1String("dr1")},
           {'d', QLatin1String("dr2")},     {'d', QLatin1String("dr3")},
           {'d', QLatin1String("dr8")},     {'t', QLatin1String("tr3")},
           {'t', QLatin1String("tr4")},     {'t', QLatin1String("tr5")},
           {'t', QLatin1String("tr6")},     {'t', QLatin1String("tr7")},
           {'r', QLatin1String("r0")},      {'r', QLatin1String("r1")},
           {'r', QLatin1String("r2")},      {'r', QLatin1String("r3")},
           {'r', QLatin1String("r4")},      {'r', QLatin1String("r5")},
           {'r', QLatin1String("r6")},      {'r', QLatin1String("r7")},
           {'r', QLatin1String("r0b")},     {'r', QLatin1String("r1b")},
           {'r', QLatin1String("r2b")},     {'r', QLatin1String("r3b")},
           {'r', QLatin1String("r4b")},     {'r', QLatin1String("r5b")},
           {'r', QLatin1String("r6b")},     {'r', QLatin1String("r7b")},
           {'r', QLatin1String("r0w")},     {'r', QLatin1String("r1w")},
           {'r', QLatin1String("r2w")},     {'r', QLatin1String("r3w")},
           {'r', QLatin1String("r4w")},     {'r', QLatin1String("r5w")},
           {'r', QLatin1String("r6w")},     {'r', QLatin1String("r7w")},
           {'r', QLatin1String("r0d")},     {'r', QLatin1String("r1d")},
           {'r', QLatin1String("r2d")},     {'r', QLatin1String("r3d")},
           {'r', QLatin1String("r4d")},     {'r', QLatin1String("r5d")},
           {'r', QLatin1String("r6d")},     {'r', QLatin1String("r7d")},
           {'r', QLatin1String("r0h")},     {'r', QLatin1String("r1h")},
           {'r', QLatin1String("r2h")},     {'r', QLatin1String("r3h")},
           {'r', QLatin1String("r0l")},     {'r', QLatin1String("r1l")},
           {'r', QLatin1String("r2l")},     {'r', QLatin1String("r3l")},
           {'r', QLatin1String("r4l")},     {'r', QLatin1String("r5l")},
           {'r', QLatin1String("r6l")},     {'r', QLatin1String("r7l")},
           {'r', QLatin1String("r8l")},     {'r', QLatin1String("r9l")},
           {'r', QLatin1String("r10l")},    {'r', QLatin1String("r11l")},
           {'r', QLatin1String("r12l")},    {'r', QLatin1String("r13l")},
           {'r', QLatin1String("r14l")},    {'r', QLatin1String("r15l")},
           {'d', QLatin1String("db")},      {'d', QLatin1String("dw")},
           {'d', QLatin1String("dd")},      {'d', QLatin1String("dq")},
           {'d', QLatin1String("dt")},      {'d', QLatin1String("ddq")},
           {'d', QLatin1String("do")},      {'d', QLatin1String("dy")},
           {'d', QLatin1String("dz")},      {'r', QLatin1String("resb")},
           {'r', QLatin1String("resw")},    {'r', QLatin1String("resd")},
           {'r', QLatin1String("resq")},    {'r', QLatin1String("rest")},
           {'r', QLatin1String("resdq")},   {'r', QLatin1String("reso")},
           {'r', QLatin1String("resy")},    {'r', QLatin1String("resz")},
           {'i', QLatin1String("inc")},     {'b', QLatin1String("bin")},
           {'e', QLatin1String("equ")},     {'t', QLatin1String("times")},
           {'b', QLatin1String("byte")},    {'w', QLatin1String("word")},
           {'d', QLatin1String("dword")},   {'q', QLatin1String("qword")},
           {'n', QLatin1String("nosplit")}, {'r', QLatin1String("rel")},
           {'a', QLatin1String("abs")},     {'s', QLatin1String("seg")},
           {'w', QLatin1String("wrt")},     {'s', QLatin1String("strict")},
           {'n', QLatin1String("near")},    {'f', QLatin1String("far")},
           {'a', QLatin1String("a32")},     {'p', QLatin1String("ptr")}};

  keywords = {
      {'l', QLatin1String("lock")},
      {'r', QLatin1String("rep")},
      {'r', QLatin1String("repe")},
      {'r', QLatin1String("repz")},
      {'r', QLatin1String("repne")},
      {'r', QLatin1String("repnz")},
      {'x', QLatin1String("xaquire")},
      {'x', QLatin1String("xrelease")},
      {'b', QLatin1String("bnd")},
      {'n', QLatin1String("nobnd")},
      {'a', QLatin1String("aaa")},
      {'a', QLatin1String("aad")},
      {'a', QLatin1String("aam")},
      {'a', QLatin1String("aas")},
      {'a', QLatin1String("adc")},
      {'a', QLatin1String("add")},
      {'a', QLatin1String("addl")},
      {'a', QLatin1String("and")},
      {'a', QLatin1String("arpl")},
      {'b', QLatin1String("bb0_reset")},
      {'b', QLatin1String("bb1_reset")},
      {'b', QLatin1String("bound")},
      {'b', QLatin1String("bsf")},
      {'b', QLatin1String("bsr")},
      {'b', QLatin1String("bswap")},
      {'b', QLatin1String("bt")},
      {'b', QLatin1String("btc")},
      {'b', QLatin1String("btr")},
      {'b', QLatin1String("bts")},
      {'c', QLatin1String("call")},
      {'c', QLatin1String("cbw")},
      {'c', QLatin1String("cdq")},
      {'c', QLatin1String("cdqe")},
      {'c', QLatin1String("clc")},
      {'c', QLatin1String("cld")},
      {'c', QLatin1String("cli")},
      {'c', QLatin1String("clts")},
      {'c', QLatin1String("cltd")},
      {'c', QLatin1String("cmc")},
      {'c', QLatin1String("cmp")},
      {'c', QLatin1String("cmpl")},
      {'c', QLatin1String("cmpsb")},
      {'c', QLatin1String("cmpsd")},
      {'c', QLatin1String("cmpsq")},
      {'c', QLatin1String("cmpsw")},
      {'c', QLatin1String("cmpxchg")},
      {'c', QLatin1String("cmpxchg486")},
      {'c', QLatin1String("cmpxchg8b")},
      {'c', QLatin1String("cmpxchg16b")},
      {'c', QLatin1String("cpuid")},
      {'c', QLatin1String("cpu_read")},
      {'c', QLatin1String("cpu_write")},
      {'c', QLatin1String("cqo")},
      {'c', QLatin1String("cwd")},
      {'c', QLatin1String("cwde")},
      {'d', QLatin1String("daa")},
      {'d', QLatin1String("das")},
      {'d', QLatin1String("dec")},
      {'d', QLatin1String("div")},
      {'d', QLatin1String("dmint")},
      {'e', QLatin1String("emms")},
      {'e', QLatin1String("enter")},
      {'e', QLatin1String("equ")},
      {'f', QLatin1String("f2xm1")},
      {'f', QLatin1String("fabs")},
      {'f', QLatin1String("fadd")},
      {'f', QLatin1String("faddp")},
      {'f', QLatin1String("fbld")},
      {'f', QLatin1String("fbstp")},
      {'f', QLatin1String("fchs")},
      {'f', QLatin1String("fclex")},
      {'f', QLatin1String("fcmovb")},
      {'f', QLatin1String("fcmovbe")},
      {'f', QLatin1String("fcmove")},
      {'f', QLatin1String("fcmovnb")},
      {'f', QLatin1String("fcmovnbe")},
      {'f', QLatin1String("fcmovne")},
      {'f', QLatin1String("fcmovnu")},
      {'f', QLatin1String("fcmovu")},
      {'f', QLatin1String("fcom")},
      {'f', QLatin1String("fcomi")},
      {'f', QLatin1String("fcomip")},
      {'f', QLatin1String("fcomp")},
      {'f', QLatin1String("fcompp")},
      {'f', QLatin1String("fcos")},
      {'f', QLatin1String("fdecstp")},
      {'f', QLatin1String("fdisi")},
      {'f', QLatin1String("fdiv")},
      {'f', QLatin1String("fdivp")},
      {'f', QLatin1String("fdivr")},
      {'f', QLatin1String("fdivrp")},
      {'f', QLatin1String("femms")},
      {'f', QLatin1String("feni")},
      {'f', QLatin1String("ffree")},
      {'f', QLatin1String("ffreep")},
      {'f', QLatin1String("fiadd")},
      {'f', QLatin1String("ficom")},
      {'f', QLatin1String("ficomp")},
      {'f', QLatin1String("fidiv")},
      {'f', QLatin1String("fidivr")},
      {'f', QLatin1String("fild")},
      {'f', QLatin1String("fimul")},
      {'f', QLatin1String("fincstp")},
      {'f', QLatin1String("finit")},
      {'f', QLatin1String("fist")},
      {'f', QLatin1String("fistp")},
      {'f', QLatin1String("fisttp")},
      {'f', QLatin1String("fisub")},
      {'f', QLatin1String("fisubr")},
      {'f', QLatin1String("fld")},
      {'f', QLatin1String("fld1")},
      {'f', QLatin1String("fldcw")},
      {'f', QLatin1String("fldenv")},
      {'f', QLatin1String("fldl2e")},
      {'f', QLatin1String("fldl2t")},
      {'f', QLatin1String("fldlg2")},
      {'f', QLatin1String("fldln2")},
      {'f', QLatin1String("fldpi")},
      {'f', QLatin1String("fldz")},
      {'f', QLatin1String("fmul")},
      {'f', QLatin1String("fmulp")},
      {'f', QLatin1String("fnclex")},
      {'f', QLatin1String("fndisi")},
      {'f', QLatin1String("fneni")},
      {'f', QLatin1String("fninit")},
      {'f', QLatin1String("fnop")},
      {'f', QLatin1String("fnsave")},
      {'f', QLatin1String("fnstcw")},
      {'f', QLatin1String("fnstenv")},
      {'f', QLatin1String("fnstsw")},
      {'f', QLatin1String("fpatan")},
      {'f', QLatin1String("fprem")},
      {'f', QLatin1String("fprem1")},
      {'f', QLatin1String("fptan")},
      {'f', QLatin1String("frndint")},
      {'f', QLatin1String("frstor")},
      {'f', QLatin1String("fsave")},
      {'f', QLatin1String("fscale")},
      {'f', QLatin1String("fsetpm")},
      {'f', QLatin1String("fsin")},
      {'f', QLatin1String("fsincos")},
      {'f', QLatin1String("fsqrt")},
      {'f', QLatin1String("fst")},
      {'f', QLatin1String("fstcw")},
      {'f', QLatin1String("fstenv")},
      {'f', QLatin1String("fstp")},
      {'f', QLatin1String("fstsw")},
      {'f', QLatin1String("fsub")},
      {'f', QLatin1String("fsubp")},
      {'f', QLatin1String("fsubr")},
      {'f', QLatin1String("fsubrp")},
      {'f', QLatin1String("ftst")},
      {'f', QLatin1String("fucom")},
      {'f', QLatin1String("fucomi")},
      {'f', QLatin1String("fucomip")},
      {'f', QLatin1String("fucomp")},
      {'f', QLatin1String("fucompp")},
      {'f', QLatin1String("fxam")},
      {'f', QLatin1String("fxch")},
      {'f', QLatin1String("fxtract")},
      {'f', QLatin1String("fyl2x")},
      {'f', QLatin1String("fyl2xp1")},
      {'g', QLatin1String("global")},
      {'g', QLatin1String("globl")},
      {'h', QLatin1String("hlt")},
      {'i', QLatin1String("ibts")},
      {'i', QLatin1String("icebp")},
      {'i', QLatin1String("idiv")},
      {'i', QLatin1String("idivl")},
      {'i', QLatin1String("idivq")},
      {'i', QLatin1String("imul")},
      {'i', QLatin1String("imull")},
      {'i', QLatin1String("imulq")},
      {'i', QLatin1String("in")},
      {'i', QLatin1String("inc")},
      {'i', QLatin1String("incbin")},
      {'i', QLatin1String("insb")},
      {'i', QLatin1String("insd")},
      {'i', QLatin1String("insw")},
      {'i', QLatin1String("int")},
      {'i', QLatin1String("int01")},
      {'i', QLatin1String("int1")},
      {'i', QLatin1String("int03")},
      {'i', QLatin1String("int3")},
      {'i', QLatin1String("into")},
      {'i', QLatin1String("invd")},
      {'i', QLatin1String("invpcid")},
      {'i', QLatin1String("invlpg")},
      {'i', QLatin1String("invlpga")},
      {'i', QLatin1String("iret")},
      {'i', QLatin1String("iretd")},
      {'i', QLatin1String("iretq")},
      {'i', QLatin1String("iretw")},
      {'j', QLatin1String("jcxz")},
      {'j', QLatin1String("jecxz")},
      {'j', QLatin1String("jrcxz")},
      {'j', QLatin1String("jmp")},
      {'j', QLatin1String("jmpe")},
      {'l', QLatin1String("lahf")},
      {'l', QLatin1String("lar")},
      {'l', QLatin1String("lds")},
      {'l', QLatin1String("lea")},
      {'l', QLatin1String("leal")},
      {'l', QLatin1String("leaq")},
      {'l', QLatin1String("leave")},
      {'l', QLatin1String("les")},
      {'l', QLatin1String("lfence")},
      {'l', QLatin1String("lfs")},
      {'l', QLatin1String("lgdt")},
      {'l', QLatin1String("lgs")},
      {'l', QLatin1String("lidt")},
      {'l', QLatin1String("lldt")},
      {'l', QLatin1String("lmsw")},
      {'l', QLatin1String("loadall")},
      {'l', QLatin1String("loadall286")},
      {'l', QLatin1String("lodsb")},
      {'l', QLatin1String("lodsd")},
      {'l', QLatin1String("lodsq")},
      {'l', QLatin1String("lodsw")},
      {'l', QLatin1String("loop")},
      {'l', QLatin1String("loope")},
      {'l', QLatin1String("loopne")},
      {'l', QLatin1String("loopnz")},
      {'l', QLatin1String("loopz")},
      {'l', QLatin1String("lsl")},
      {'l', QLatin1String("lss")},
      {'l', QLatin1String("ltr")},
      {'m', QLatin1String("mfence")},
      {'m', QLatin1String("monitor")},
      {'m', QLatin1String("mov")},
      {'m', QLatin1String("movd")},
      {'m', QLatin1String("movl")},
      {'m', QLatin1String("movq")},
      {'m', QLatin1String("movsb")},
      {'m', QLatin1String("movsd")},
      {'m', QLatin1String("movsq")},
      {'m', QLatin1String("movsw")},
      {'m', QLatin1String("movsx")},
      {'m', QLatin1String("movsxd")},
      {'m', QLatin1String("movzx")},
      {'m', QLatin1String("mul")},
      {'m', QLatin1String("mwait")},
      {'n', QLatin1String("neg")},
      {'n', QLatin1String("nop")},
      {'n', QLatin1String("not")},
      {'o', QLatin1String("or")},
      {'o', QLatin1String("out")},
      {'o', QLatin1String("outsb")},
      {'o', QLatin1String("outsd")},
      {'o', QLatin1String("outsw")},
      {'p', QLatin1String("packssdw")},
      {'p', QLatin1String("packsswb")},
      {'p', QLatin1String("packuswb")},
      {'p', QLatin1String("paddb")},
      {'p', QLatin1String("paddd")},
      {'p', QLatin1String("paddsb")},
      {'p', QLatin1String("paddsiw")},
      {'p', QLatin1String("paddsw")},
      {'p', QLatin1String("paddusb")},
      {'p', QLatin1String("paddusw")},
      {'p', QLatin1String("paddw")},
      {'p', QLatin1String("pand")},
      {'p', QLatin1String("pandn")},
      {'p', QLatin1String("pause")},
      {'p', QLatin1String("paveb")},
      {'p', QLatin1String("pavgusb")},
      {'p', QLatin1String("pcmpeqb")},
      {'p', QLatin1String("pcmpeqd")},
      {'p', QLatin1String("pcmpeqw")},
      {'p', QLatin1String("pcmpgtb")},
      {'p', QLatin1String("pcmpgtd")},
      {'p', QLatin1String("pcmpgtw")},
      {'p', QLatin1String("pdistib")},
      {'p', QLatin1String("pf2id")},
      {'p', QLatin1String("pfacc")},
      {'p', QLatin1String("pfadd")},
      {'p', QLatin1String("pfcmpeq")},
      {'p', QLatin1String("pfcmpge")},
      {'p', QLatin1String("pfcmpgt")},
      {'p', QLatin1String("pfmax")},
      {'p', QLatin1String("pfmin")},
      {'p', QLatin1String("pfmul")},
      {'p', QLatin1String("pfrcp")},
      {'p', QLatin1String("pfrcpit1")},
      {'p', QLatin1String("pfrcpit2")},
      {'p', QLatin1String("pfrsqit1")},
      {'p', QLatin1String("pfrsqrt")},
      {'p', QLatin1String("pfsub")},
      {'p', QLatin1String("pfsubr")},
      {'p', QLatin1String("pi2fd")},
      {'p', QLatin1String("pmachriw")},
      {'p', QLatin1String("pmaddwd")},
      {'p', QLatin1String("pmagw")},
      {'p', QLatin1String("pmulhriw")},
      {'p', QLatin1String("pmulhrwa")},
      {'p', QLatin1String("pmulhrwc")},
      {'p', QLatin1String("pmulhw")},
      {'p', QLatin1String("pmullw")},
      {'p', QLatin1String("pmvgezb")},
      {'p', QLatin1String("pmvlzb")},
      {'p', QLatin1String("pmvnzb")},
      {'p', QLatin1String("pmvzb")},
      {'p', QLatin1String("pop")},
      {'p', QLatin1String("popq")},
      {'p', QLatin1String("popa")},
      {'p', QLatin1String("popad")},
      {'p', QLatin1String("popaw")},
      {'p', QLatin1String("popf")},
      {'p', QLatin1String("popfd")},
      {'p', QLatin1String("popfq")},
      {'p', QLatin1String("popfw")},
      {'p', QLatin1String("por")},
      {'p', QLatin1String("prefetch")},
      {'p', QLatin1String("prefetchw")},
      {'p', QLatin1String("pslld")},
      {'p', QLatin1String("psllq")},
      {'p', QLatin1String("psllw")},
      {'p', QLatin1String("psrad")},
      {'p', QLatin1String("psraw")},
      {'p', QLatin1String("psrld")},
      {'p', QLatin1String("psrlq")},
      {'p', QLatin1String("psrlw")},
      {'p', QLatin1String("psubb")},
      {'p', QLatin1String("psubd")},
      {'p', QLatin1String("psubsb")},
      {'p', QLatin1String("psubsiw")},
      {'p', QLatin1String("psubsw")},
      {'p', QLatin1String("psubusb")},
      {'p', QLatin1String("psubusw")},
      {'p', QLatin1String("psubw")},
      {'p', QLatin1String("punpckhbw")},
      {'p', QLatin1String("punpckhdq")},
      {'p', QLatin1String("punpckhwd")},
      {'p', QLatin1String("punpcklbw")},
      {'p', QLatin1String("punpckldq")},
      {'p', QLatin1String("punpcklwd")},
      {'p', QLatin1String("push")},
      {'p', QLatin1String("pusha")},
      {'p', QLatin1String("pushq")},
      {'p', QLatin1String("pushad")},
      {'p', QLatin1String("pushaw")},
      {'p', QLatin1String("pushf")},
      {'p', QLatin1String("pushfd")},
      {'p', QLatin1String("pushfq")},
      {'p', QLatin1String("pushfw")},
      {'p', QLatin1String("pxor")},
      {'r', QLatin1String("rcl")},
      {'r', QLatin1String("rcr")},
      {'r', QLatin1String("rdshr")},
      {'r', QLatin1String("rdmsr")},
      {'r', QLatin1String("rdpmc")},
      {'r', QLatin1String("rdtsc")},
      {'r', QLatin1String("rdtscp")},
      {'r', QLatin1String("ret")},
      {'r', QLatin1String("retf")},
      {'r', QLatin1String("retn")},
      {'r', QLatin1String("retq")},
      {'r', QLatin1String("rol")},
      {'r', QLatin1String("ror")},
      {'r', QLatin1String("rdm")},
      {'r', QLatin1String("rsdc")},
      {'r', QLatin1String("rsldt")},
      {'r', QLatin1String("rsm")},
      {'r', QLatin1String("rsts")},
      {'s', QLatin1String("sahf")},
      {'s', QLatin1String("sal")},
      {'s', QLatin1String("sall")},
      {'s', QLatin1String("salq")},
      {'s', QLatin1String("salc")},
      {'s', QLatin1String("sar")},
      {'s', QLatin1String("sarl")},
      {'s', QLatin1String("sarq")},
      {'s', QLatin1String("sbb")},
      {'s', QLatin1String("scasb")},
      {'s', QLatin1String("scasd")},
      {'s', QLatin1String("scasq")},
      {'s', QLatin1String("scasw")},
      {'s', QLatin1String("sfence")},
      {'s', QLatin1String("sgdt")},
      {'s', QLatin1String("shl")},
      {'s', QLatin1String("shll")},
      {'s', QLatin1String("shllq")},
      {'s', QLatin1String("shld")},
      {'s', QLatin1String("shr")},
      {'s', QLatin1String("shrd")},
      {'s', QLatin1String("sidt")},
      {'s', QLatin1String("sldt")},
      {'s', QLatin1String("skinit")},
      {'s', QLatin1String("smi")},
      {'s', QLatin1String("smint")},
      {'s', QLatin1String("smintold")},
      {'s', QLatin1String("smsw")},
      {'s', QLatin1String("stc")},
      {'s', QLatin1String("std")},
      {'s', QLatin1String("sti")},
      {'s', QLatin1String("stosb")},
      {'s', QLatin1String("stosd")},
      {'s', QLatin1String("stosq")},
      {'s', QLatin1String("stosw")},
      {'s', QLatin1String("str")},
      {'s', QLatin1String("sub")},
      {'s', QLatin1String("svdc")},
      {'s', QLatin1String("svldt")},
      {'s', QLatin1String("svts")},
      {'s', QLatin1String("swapgs")},
      {'s', QLatin1String("syscall")},
      {'s', QLatin1String("sysenter")},
      {'s', QLatin1String("sysexit")},
      {'s', QLatin1String("sysret")},
      {'t', QLatin1String("test")},
      {'t', QLatin1String("testl")},
      {'t', QLatin1String("testq")},
      {'u', QLatin1String("ud0")},
      {'u', QLatin1String("ud1")},
      {'u', QLatin1String("ud2b")},
      {'u', QLatin1String("ud2")},
      {'u', QLatin1String("ud2a")},
      {'u', QLatin1String("umov")},
      {'v', QLatin1String("verr")},
      {'v', QLatin1String("verw")},
      {'f', QLatin1String("fwait")},
      {'w', QLatin1String("wbinvd")},
      {'w', QLatin1String("wrshr")},
      {'w', QLatin1String("wrmsr")},
      {'x', QLatin1String("xadd")},
      {'x', QLatin1String("xbts")},
      {'x', QLatin1String("xchg")},
      {'x', QLatin1String("xlatb")},
      {'x', QLatin1String("xlat")},
      {'x', QLatin1String("xor")},
      {'c', QLatin1String("cmove")},
      {'c', QLatin1String("cmovz")},
      {'c', QLatin1String("cmovne")},
      {'c', QLatin1String("cmovnz")},
      {'c', QLatin1String("cmova")},
      {'c', QLatin1String("cmovnbe")},
      {'c', QLatin1String("cmovae")},
      {'c', QLatin1String("cmovnb")},
      {'c', QLatin1String("cmovb")},
      {'c', QLatin1String("cmovnae")},
      {'c', QLatin1String("cmovbe")},
      {'c', QLatin1String("cmovna")},
      {'c', QLatin1String("cmovg")},
      {'c', QLatin1String("cmovnle")},
      {'c', QLatin1String("cmovge")},
      {'c', QLatin1String("cmovnl")},
      {'c', QLatin1String("cmovl")},
      {'c', QLatin1String("cmovnge")},
      {'c', QLatin1String("cmovle")},
      {'c', QLatin1String("cmovng")},
      {'c', QLatin1String("cmovc")},
      {'c', QLatin1String("cmovnc")},
      {'c', QLatin1String("cmovo")},
      {'c', QLatin1String("cmovno")},
      {'c', QLatin1String("cmovs")},
      {'c', QLatin1String("cmovns")},
      {'c', QLatin1String("cmovp")},
      {'c', QLatin1String("cmovpe")},
      {'c', QLatin1String("cmovnp")},
      {'c', QLatin1String("cmovpo")},
      {'j', QLatin1String("je")},
      {'j', QLatin1String("jz")},
      {'j', QLatin1String("jne")},
      {'j', QLatin1String("jnz")},
      {'j', QLatin1String("ja")},
      {'j', QLatin1String("jnbe")},
      {'j', QLatin1String("jae")},
      {'j', QLatin1String("jnb")},
      {'j', QLatin1String("jb")},
      {'j', QLatin1String("jnae")},
      {'j', QLatin1String("jbe")},
      {'j', QLatin1String("jna")},
      {'j', QLatin1String("jg")},
      {'j', QLatin1String("jnle")},
      {'j', QLatin1String("jge")},
      {'j', QLatin1String("jnl")},
      {'j', QLatin1String("jl")},
      {'j', QLatin1String("jnge")},
      {'j', QLatin1String("jle")},
      {'j', QLatin1String("jng")},
      {'j', QLatin1String("jc")},
      {'j', QLatin1String("jnc")},
      {'j', QLatin1String("jo")},
      {'j', QLatin1String("jno")},
      {'j', QLatin1String("js")},
      {'j', QLatin1String("jns")},
      {'j', QLatin1String("jpo")},
      {'j', QLatin1String("jnp")},
      {'j', QLatin1String("jpe")},
      {'j', QLatin1String("jp")},
      {'s', QLatin1String("sete")},
      {'s', QLatin1String("setz")},
      {'s', QLatin1String("setne")},
      {'s', QLatin1String("setnz")},
      {'s', QLatin1String("seta")},
      {'s', QLatin1String("setnbe")},
      {'s', QLatin1String("setae")},
      {'s', QLatin1String("setnb")},
      {'s', QLatin1String("setnc")},
      {'s', QLatin1String("setb")},
      {'s', QLatin1String("setnae")},
      {'s', QLatin1String("setcset")},
      {'s', QLatin1String("setbe")},
      {'s', QLatin1String("setna")},
      {'s', QLatin1String("setg")},
      {'s', QLatin1String("setnle")},
      {'s', QLatin1String("setge")},
      {'s', QLatin1String("setnl")},
      {'s', QLatin1String("setl")},
      {'s', QLatin1String("setnge")},
      {'s', QLatin1String("setle")},
      {'s', QLatin1String("setng")},
      {'s', QLatin1String("sets")},
      {'s', QLatin1String("setns")},
      {'s', QLatin1String("seto")},
      {'s', QLatin1String("setno")},
      {'s', QLatin1String("setpe")},
      {'s', QLatin1String("setp")},
      {'s', QLatin1String("setpo")},
      {'s', QLatin1String("setnp")},
      {'a', QLatin1String("addps")},
      {'a', QLatin1String("addss")},
      {'a', QLatin1String("andnps")},
      {'a', QLatin1String("andps")},
      {'c', QLatin1String("cmpeqps")},
      {'c', QLatin1String("cmpeqss")},
      {'c', QLatin1String("cmpleps")},
      {'c', QLatin1String("cmpless")},
      {'c', QLatin1String("cmpltps")},
      {'c', QLatin1String("cmpltss")},
      {'c', QLatin1String("cmpneqps")},
      {'c', QLatin1String("cmpneqss")},
      {'c', QLatin1String("cmpnleps")},
      {'c', QLatin1String("cmpnless")},
      {'c', QLatin1String("cmpnltps")},
      {'c', QLatin1String("cmpnltss")},
      {'c', QLatin1String("cmpordps")},
      {'c', QLatin1String("cmpordss")},
      {'c', QLatin1String("cmpunordps")},
      {'c', QLatin1String("cmpunordss")},
      {'c', QLatin1String("cmpps")},
      {'c', QLatin1String("cmpss")},
      {'c', QLatin1String("comiss")},
      {'c', QLatin1String("cvtpi2ps")},
      {'c', QLatin1String("cvtps2pi")},
      {'c', QLatin1String("cvtsi2ss")},
      {'c', QLatin1String("cvtss2si")},
      {'c', QLatin1String("cvttps2pi")},
      {'c', QLatin1String("cvttss2si")},
      {'d', QLatin1String("divps")},
      {'d', QLatin1String("divss")},
      {'l', QLatin1String("ldmxcsr")},
      {'m', QLatin1String("maxps")},
      {'m', QLatin1String("maxss")},
      {'m', QLatin1String("minps")},
      {'m', QLatin1String("minss")},
      {'m', QLatin1String("movaps")},
      {'m', QLatin1String("movhps")},
      {'m', QLatin1String("movlhps")},
      {'m', QLatin1String("movlps")},
      {'m', QLatin1String("movhlps")},
      {'m', QLatin1String("movmskps")},
      {'m', QLatin1String("movntps")},
      {'m', QLatin1String("movss")},
      {'m', QLatin1String("movups")},
      {'m', QLatin1String("mulps")},
      {'m', QLatin1String("mulss")},
      {'o', QLatin1String("orps")},
      {'r', QLatin1String("rcpps")},
      {'r', QLatin1String("rcpss")},
      {'r', QLatin1String("rsqrtps")},
      {'r', QLatin1String("rsqrtss")},
      {'s', QLatin1String("shufps")},
      {'s', QLatin1String("sqrtps")},
      {'s', QLatin1String("sqrtss")},
      {'s', QLatin1String("stmxcsr")},
      {'s', QLatin1String("subps")},
      {'s', QLatin1String("subss")},
      {'u', QLatin1String("ucomiss")},
      {'u', QLatin1String("unpckhps")},
      {'u', QLatin1String("unpcklps")},
      {'x', QLatin1String("xorps")},
      {'f', QLatin1String("fxrstor")},
      {'f', QLatin1String("fxrstor64")},
      {'f', QLatin1String("fxsave")},
      {'f', QLatin1String("fxsave64")},
      {'x', QLatin1String("xgetbv")},
      {'x', QLatin1String("xsetbv")},
      {'x', QLatin1String("xsave")},
      {'x', QLatin1String("xsave64")},
      {'x', QLatin1String("xsaveopt")},
      {'x', QLatin1String("xsaveopt64")},
      {'x', QLatin1String("xrstor")},
      {'x', QLatin1String("xrstor64")},
      {'p', QLatin1String("prefetchnta")},
      {'p', QLatin1String("prefetcht0")},
      {'p', QLatin1String("prefetcht1")},
      {'p', QLatin1String("prefetcht2")},
      {'m', QLatin1String("maskmovq")},
      {'m', QLatin1String("movntq")},
      {'p', QLatin1String("pavgb")},
      {'p', QLatin1String("pavgw")},
      {'p', QLatin1String("pextrw")},
      {'p', QLatin1String("pinsrw")},
      {'p', QLatin1String("pmaxsw")},
      {'p', QLatin1String("pmaxub")},
      {'p', QLatin1String("pminsw")},
      {'p', QLatin1String("pminub")},
      {'p', QLatin1String("pmovmskb")},
      {'p', QLatin1String("pmulhuw")},
      {'p', QLatin1String("psadbw")},
      {'p', QLatin1String("pshufw")},
      {'p', QLatin1String("pf2iw")},
      {'p', QLatin1String("pfnacc")},
      {'p', QLatin1String("pfpnacc")},
      {'p', QLatin1String("pi2fw")},
      {'p', QLatin1String("pswapd")},
      {'m', QLatin1String("maskmovdqu")},
      {'c', QLatin1String("clflush")},
      {'m', QLatin1String("movntdq")},
      {'m', QLatin1String("movnti")},
      {'m', QLatin1String("movntpd")},
      {'m', QLatin1String("movdqa")},
      {'m', QLatin1String("movdqu")},
      {'m', QLatin1String("movdq2q")},
      {'m', QLatin1String("movq2dq")},
      {'p', QLatin1String("paddq")},
      {'p', QLatin1String("pmuludq")},
      {'p', QLatin1String("pshufd")},
      {'p', QLatin1String("pshufhw")},
      {'p', QLatin1String("pshuflw")},
      {'p', QLatin1String("pslldq")},
      {'p', QLatin1String("psrldq")},
      {'p', QLatin1String("psubq")},
      {'p', QLatin1String("punpckhqdq")},
      {'p', QLatin1String("punpcklqdq")},
      {'a', QLatin1String("addpd")},
      {'a', QLatin1String("addsd")},
      {'a', QLatin1String("andnpd")},
      {'a', QLatin1String("andpd")},
      {'c', QLatin1String("cmpeqpd")},
      {'c', QLatin1String("cmpeqsd")},
      {'c', QLatin1String("cmplepd")},
      {'c', QLatin1String("cmplesd")},
      {'c', QLatin1String("cmpltpd")},
      {'c', QLatin1String("cmpltsd")},
      {'c', QLatin1String("cmpneqpd")},
      {'c', QLatin1String("cmpneqsd")},
      {'c', QLatin1String("cmpnlepd")},
      {'c', QLatin1String("cmpnlesd")},
      {'c', QLatin1String("cmpnltpd")},
      {'c', QLatin1String("cmpnltsd")},
      {'c', QLatin1String("cmpordpd")},
      {'c', QLatin1String("cmpordsd")},
      {'c', QLatin1String("cmpunordpd")},
      {'c', QLatin1String("cmpunordsd")},
      {'c', QLatin1String("cmppd")},
      {'c', QLatin1String("comisd")},
      {'c', QLatin1String("cvtdq2pd")},
      {'c', QLatin1String("cvtdq2ps")},
      {'c', QLatin1String("cvtpd2dq")},
      {'c', QLatin1String("cvtpd2pi")},
      {'c', QLatin1String("cvtpd2ps")},
      {'c', QLatin1String("cvtpi2pd")},
      {'c', QLatin1String("cvtps2dq")},
      {'c', QLatin1String("cvtps2pd")},
      {'c', QLatin1String("cvtsd2si")},
      {'c', QLatin1String("cvtsd2ss")},
      {'c', QLatin1String("cvtsi2sd")},
      {'c', QLatin1String("cvtss2sd")},
      {'c', QLatin1String("cvttpd2pi")},
      {'c', QLatin1String("cvttpd2dq")},
      {'c', QLatin1String("cvttps2dq")},
      {'c', QLatin1String("cvttsd2si")},
      {'d', QLatin1String("divpd")},
      {'d', QLatin1String("divsd")},
      {'m', QLatin1String("maxpd")},
      {'m', QLatin1String("maxsd")},
      {'m', QLatin1String("minpd")},
      {'m', QLatin1String("minsd")},
      {'m', QLatin1String("movapd")},
      {'m', QLatin1String("movhpd")},
      {'m', QLatin1String("movlpd")},
      {'m', QLatin1String("movmskpd")},
      {'m', QLatin1String("movupd")},
      {'m', QLatin1String("mulpd")},
      {'m', QLatin1String("mulsd")},
      {'o', QLatin1String("orpd")},
      {'s', QLatin1String("shufpd")},
      {'s', QLatin1String("sqrtpd")},
      {'s', QLatin1String("sqrtsd")},
      {'s', QLatin1String("subpd")},
      {'s', QLatin1String("subsd")},
      {'u', QLatin1String("ucomisd")},
      {'u', QLatin1String("unpckhpd")},
      {'u', QLatin1String("unpcklpd")},
      {'x', QLatin1String("xorpd")},
      {'a', QLatin1String("addsubpd")},
      {'a', QLatin1String("addsubps")},
      {'h', QLatin1String("haddpd")},
      {'h', QLatin1String("haddps")},
      {'h', QLatin1String("hsubpd")},
      {'h', QLatin1String("hsubps")},
      {'l', QLatin1String("lddqu")},
      {'m', QLatin1String("movddup")},
      {'m', QLatin1String("movshdup")},
      {'m', QLatin1String("movsldup")},
      {'c', QLatin1String("clgi")},
      {'s', QLatin1String("stgi")},
      {'v', QLatin1String("vmcall")},
      {'v', QLatin1String("vmclear")},
      {'v', QLatin1String("vmfunc")},
      {'v', QLatin1String("vmlaunch")},
      {'v', QLatin1String("vmload")},
      {'v', QLatin1String("vmmcall")},
      {'v', QLatin1String("vmptrld")},
      {'v', QLatin1String("vmptrst")},
      {'v', QLatin1String("vmread")},
      {'v', QLatin1String("vmresume")},
      {'v', QLatin1String("vmrun")},
      {'v', QLatin1String("vmsave")},
      {'v', QLatin1String("vmwrite")},
      {'v', QLatin1String("vmxoff")},
      {'v', QLatin1String("vmxon")},
      {'i', QLatin1String("invept")},
      {'i', QLatin1String("invvpid")},
      {'p', QLatin1String("pabsb")},
      {'p', QLatin1String("pabsw")},
      {'p', QLatin1String("pabsd")},
      {'p', QLatin1String("palignr")},
      {'p', QLatin1String("phaddw")},
      {'p', QLatin1String("phaddd")},
      {'p', QLatin1String("phaddsw")},
      {'p', QLatin1String("phsubw")},
      {'p', QLatin1String("phsubd")},
      {'p', QLatin1String("phsubsw")},
      {'p', QLatin1String("pmaddubsw")},
      {'p', QLatin1String("pmulhrsw")},
      {'p', QLatin1String("pshufb")},
      {'p', QLatin1String("psignb")},
      {'p', QLatin1String("psignw")},
      {'p', QLatin1String("psignd")},
      {'e', QLatin1String("extrq")},
      {'i', QLatin1String("insertq")},
      {'m', QLatin1String("movntsd")},
      {'m', QLatin1String("movntss")},
      {'l', QLatin1String("lzcnt")},
      {'b', QLatin1String("blendpd")},
      {'b', QLatin1String("blendps")},
      {'b', QLatin1String("blendvpd")},
      {'b', QLatin1String("blendvps")},
      {'d', QLatin1String("dppd")},
      {'d', QLatin1String("dpps")},
      {'e', QLatin1String("extractps")},
      {'i', QLatin1String("insertps")},
      {'m', QLatin1String("movntdqa")},
      {'m', QLatin1String("mpsadbw")},
      {'p', QLatin1String("packusdw")},
      {'p', QLatin1String("pblendvb")},
      {'p', QLatin1String("pblendw")},
      {'p', QLatin1String("pcmpeqq")},
      {'p', QLatin1String("pextrb")},
      {'p', QLatin1String("pextrd")},
      {'p', QLatin1String("pextrq")},
      {'p', QLatin1String("phminposuw")},
      {'p', QLatin1String("pinsrb")},
      {'p', QLatin1String("pinsrd")},
      {'p', QLatin1String("pinsrq")},
      {'p', QLatin1String("pmaxsb")},
      {'p', QLatin1String("pmaxsd")},
      {'p', QLatin1String("pmaxud")},
      {'p', QLatin1String("pmaxuw")},
      {'p', QLatin1String("pminsb")},
      {'p', QLatin1String("pminsd")},
      {'p', QLatin1String("pminud")},
      {'p', QLatin1String("pminuw")},
      {'p', QLatin1String("pmovsxbw")},
      {'p', QLatin1String("pmovsxbd")},
      {'p', QLatin1String("pmovsxbq")},
      {'p', QLatin1String("pmovsxwd")},
      {'p', QLatin1String("pmovsxwq")},
      {'p', QLatin1String("pmovsxdq")},
      {'p', QLatin1String("pmovzxbw")},
      {'p', QLatin1String("pmovzxbd")},
      {'p', QLatin1String("pmovzxbq")},
      {'p', QLatin1String("pmovzxwd")},
      {'p', QLatin1String("pmovzxwq")},
      {'p', QLatin1String("pmovzxdq")},
      {'p', QLatin1String("pmuldq")},
      {'p', QLatin1String("pmulld")},
      {'p', QLatin1String("ptest")},
      {'r', QLatin1String("roundpd")},
      {'r', QLatin1String("roundps")},
      {'r', QLatin1String("roundsd")},
      {'r', QLatin1String("roundss")},
      {'c', QLatin1String("crc32")},
      {'p', QLatin1String("pcmpestri")},
      {'p', QLatin1String("pcmpestrm")},
      {'p', QLatin1String("pcmpistri")},
      {'p', QLatin1String("pcmpistrm")},
      {'p', QLatin1String("pcmpgtq")},
      {'p', QLatin1String("popcnt")},
      {'g', QLatin1String("getsec")},
      {'p', QLatin1String("pfrcpv")},
      {'p', QLatin1String("pfrsqrtv")},
      {'m', QLatin1String("movbe")},
      {'a', QLatin1String("aesenc")},
      {'a', QLatin1String("aesenclast")},
      {'a', QLatin1String("aesdec")},
      {'a', QLatin1String("aesdeclast")},
      {'a', QLatin1String("aesimc")},
      {'a', QLatin1String("aeskeygenassist")},
      {'v', QLatin1String("vaesenc")},
      {'v', QLatin1String("vaesenclast")},
      {'v', QLatin1String("vaesdec")},
      {'v', QLatin1String("vaesdeclast")},
      {'v', QLatin1String("vaesimc")},
      {'v', QLatin1String("vaeskeygenassist")},
      {'v', QLatin1String("vaddpd")},
      {'v', QLatin1String("vaddps")},
      {'v', QLatin1String("vaddsd")},
      {'v', QLatin1String("vaddss")},
      {'v', QLatin1String("vaddsubpd")},
      {'v', QLatin1String("vaddsubps")},
      {'v', QLatin1String("vandpd")},
      {'v', QLatin1String("vandps")},
      {'v', QLatin1String("vandnpd")},
      {'v', QLatin1String("vandnps")},
      {'v', QLatin1String("vblendpd")},
      {'v', QLatin1String("vblendps")},
      {'v', QLatin1String("vblendvpd")},
      {'v', QLatin1String("vblendvps")},
      {'v', QLatin1String("vbroadcastss")},
      {'v', QLatin1String("vbroadcastsd")},
      {'v', QLatin1String("vbroadcastf128")},
      {'v', QLatin1String("vcmpeq_ospd")},
      {'v', QLatin1String("vcmpeqpd")},
      {'v', QLatin1String("vcmplt_ospd")},
      {'v', QLatin1String("vcmpltpd")},
      {'v', QLatin1String("vcmple_ospd")},
      {'v', QLatin1String("vcmplepd")},
      {'v', QLatin1String("vcmpunord_qpd")},
      {'v', QLatin1String("vcmpunordpd")},
      {'v', QLatin1String("vcmpneq_uqpd")},
      {'v', QLatin1String("vcmpneqpd")},
      {'v', QLatin1String("vcmpnlt_uspd")},
      {'v', QLatin1String("vcmpnltpd")},
      {'v', QLatin1String("vcmpnle_uspd")},
      {'v', QLatin1String("vcmpnlepd")},
      {'v', QLatin1String("vcmpord_qpd")},
      {'v', QLatin1String("vcmpordpd")},
      {'v', QLatin1String("vcmpeq_uqpd")},
      {'v', QLatin1String("vcmpnge_uspd")},
      {'v', QLatin1String("vcmpngepd")},
      {'v', QLatin1String("vcmpngt_uspd")},
      {'v', QLatin1String("vcmpngtpd")},
      {'v', QLatin1String("vcmpfalse_oqpd")},
      {'v', QLatin1String("vcmpfalsepd")},
      {'v', QLatin1String("vcmpneq_oqpd")},
      {'v', QLatin1String("vcmpge_ospd")},
      {'v', QLatin1String("vcmpgepd")},
      {'v', QLatin1String("vcmpgt_ospd")},
      {'v', QLatin1String("vcmpgtpd")},
      {'v', QLatin1String("vcmptrue_uqpd")},
      {'v', QLatin1String("vcmptruepd")},
      {'v', QLatin1String("vcmplt_oqpd")},
      {'v', QLatin1String("vcmple_oqpd")},
      {'v', QLatin1String("vcmpunord_spd")},
      {'v', QLatin1String("vcmpneq_uspd")},
      {'v', QLatin1String("vcmpnlt_uqpd")},
      {'v', QLatin1String("vcmpnle_uqpd")},
      {'v', QLatin1String("vcmpord_spd")},
      {'v', QLatin1String("vcmpeq_uspd")},
      {'v', QLatin1String("vcmpnge_uqpd")},
      {'v', QLatin1String("vcmpngt_uqpd")},
      {'v', QLatin1String("vcmpfalse_ospd")},
      {'v', QLatin1String("vcmpneq_ospd")},
      {'v', QLatin1String("vcmpge_oqpd")},
      {'v', QLatin1String("vcmpgt_oqpd")},
      {'v', QLatin1String("vcmptrue_uspd")},
      {'v', QLatin1String("vcmppd")},
      {'v', QLatin1String("vcmpeq_osps")},
      {'v', QLatin1String("vcmpeqps")},
      {'v', QLatin1String("vcmplt_osps")},
      {'v', QLatin1String("vcmpltps")},
      {'v', QLatin1String("vcmple_osps")},
      {'v', QLatin1String("vcmpleps")},
      {'v', QLatin1String("vcmpunord_qps")},
      {'v', QLatin1String("vcmpunordps")},
      {'v', QLatin1String("vcmpneq_uqps")},
      {'v', QLatin1String("vcmpneqps")},
      {'v', QLatin1String("vcmpnlt_usps")},
      {'v', QLatin1String("vcmpnltps")},
      {'v', QLatin1String("vcmpnle_usps")},
      {'v', QLatin1String("vcmpnleps")},
      {'v', QLatin1String("vcmpord_qps")},
      {'v', QLatin1String("vcmpordps")},
      {'v', QLatin1String("vcmpeq_uqps")},
      {'v', QLatin1String("vcmpnge_usps")},
      {'v', QLatin1String("vcmpngeps")},
      {'v', QLatin1String("vcmpngt_usps")},
      {'v', QLatin1String("vcmpngtps")},
      {'v', QLatin1String("vcmpfalse_oqps")},
      {'v', QLatin1String("vcmpfalseps")},
      {'v', QLatin1String("vcmpneq_oqps")},
      {'v', QLatin1String("vcmpge_osps")},
      {'v', QLatin1String("vcmpgeps")},
      {'v', QLatin1String("vcmpgt_osps")},
      {'v', QLatin1String("vcmpgtps")},
      {'v', QLatin1String("vcmptrue_uqps")},
      {'v', QLatin1String("vcmptrueps")},
      {'v', QLatin1String("vcmplt_oqps")},
      {'v', QLatin1String("vcmple_oqps")},
      {'v', QLatin1String("vcmpunord_sps")},
      {'v', QLatin1String("vcmpneq_usps")},
      {'v', QLatin1String("vcmpnlt_uqps")},
      {'v', QLatin1String("vcmpnle_uqps")},
      {'v', QLatin1String("vcmpord_sps")},
      {'v', QLatin1String("vcmpeq_usps")},
      {'v', QLatin1String("vcmpnge_uqps")},
      {'v', QLatin1String("vcmpngt_uqps")},
      {'v', QLatin1String("vcmpfalse_osps")},
      {'v', QLatin1String("vcmpneq_osps")},
      {'v', QLatin1String("vcmpge_oqps")},
      {'v', QLatin1String("vcmpgt_oqps")},
      {'v', QLatin1String("vcmptrue_usps")},
      {'v', QLatin1String("vcmpps")},
      {'v', QLatin1String("vcmpeq_ossd")},
      {'v', QLatin1String("vcmpeqsd")},
      {'v', QLatin1String("vcmplt_ossd")},
      {'v', QLatin1String("vcmpltsd")},
      {'v', QLatin1String("vcmple_ossd")},
      {'v', QLatin1String("vcmplesd")},
      {'v', QLatin1String("vcmpunord_qsd")},
      {'v', QLatin1String("vcmpunordsd")},
      {'v', QLatin1String("vcmpneq_uqsd")},
      {'v', QLatin1String("vcmpneqsd")},
      {'v', QLatin1String("vcmpnlt_ussd")},
      {'v', QLatin1String("vcmpnltsd")},
      {'v', QLatin1String("vcmpnle_ussd")},
      {'v', QLatin1String("vcmpnlesd")},
      {'v', QLatin1String("vcmpord_qsd")},
      {'v', QLatin1String("vcmpordsd")},
      {'v', QLatin1String("vcmpeq_uqsd")},
      {'v', QLatin1String("vcmpnge_ussd")},
      {'v', QLatin1String("vcmpngesd")},
      {'v', QLatin1String("vcmpngt_ussd")},
      {'v', QLatin1String("vcmpngtsd")},
      {'v', QLatin1String("vcmpfalse_oqsd")},
      {'v', QLatin1String("vcmpfalsesd")},
      {'v', QLatin1String("vcmpneq_oqsd")},
      {'v', QLatin1String("vcmpge_ossd")},
      {'v', QLatin1String("vcmpgesd")},
      {'v', QLatin1String("vcmpgt_ossd")},
      {'v', QLatin1String("vcmpgtsd")},
      {'v', QLatin1String("vcmptrue_uqsd")},
      {'v', QLatin1String("vcmptruesd")},
      {'v', QLatin1String("vcmplt_oqsd")},
      {'v', QLatin1String("vcmple_oqsd")},
      {'v', QLatin1String("vcmpunord_ssd")},
      {'v', QLatin1String("vcmpneq_ussd")},
      {'v', QLatin1String("vcmpnlt_uqsd")},
      {'v', QLatin1String("vcmpnle_uqsd")},
      {'v', QLatin1String("vcmpord_ssd")},
      {'v', QLatin1String("vcmpeq_ussd")},
      {'v', QLatin1String("vcmpnge_uqsd")},
      {'v', QLatin1String("vcmpngt_uqsd")},
      {'v', QLatin1String("vcmpfalse_ossd")},
      {'v', QLatin1String("vcmpneq_ossd")},
      {'v', QLatin1String("vcmpge_oqsd")},
      {'v', QLatin1String("vcmpgt_oqsd")},
      {'v', QLatin1String("vcmptrue_ussd")},
      {'v', QLatin1String("vcmpsd")},
      {'v', QLatin1String("vcmpeq_osss")},
      {'v', QLatin1String("vcmpeqss")},
      {'v', QLatin1String("vcmplt_osss")},
      {'v', QLatin1String("vcmpltss")},
      {'v', QLatin1String("vcmple_osss")},
      {'v', QLatin1String("vcmpless")},
      {'v', QLatin1String("vcmpunord_qss")},
      {'v', QLatin1String("vcmpunordss")},
      {'v', QLatin1String("vcmpneq_uqss")},
      {'v', QLatin1String("vcmpneqss")},
      {'v', QLatin1String("vcmpnlt_usss")},
      {'v', QLatin1String("vcmpnltss")},
      {'v', QLatin1String("vcmpnle_usss")},
      {'v', QLatin1String("vcmpnless")},
      {'v', QLatin1String("vcmpord_qss")},
      {'v', QLatin1String("vcmpordss")},
      {'v', QLatin1String("vcmpeq_uqss")},
      {'v', QLatin1String("vcmpnge_usss")},
      {'v', QLatin1String("vcmpngess")},
      {'v', QLatin1String("vcmpngt_usss")},
      {'v', QLatin1String("vcmpngtss")},
      {'v', QLatin1String("vcmpfalse_oqss")},
      {'v', QLatin1String("vcmpfalsess")},
      {'v', QLatin1String("vcmpneq_oqss")},
      {'v', QLatin1String("vcmpge_osss")},
      {'v', QLatin1String("vcmpgess")},
      {'v', QLatin1String("vcmpgt_osss")},
      {'v', QLatin1String("vcmpgtss")},
      {'v', QLatin1String("vcmptrue_uqss")},
      {'v', QLatin1String("vcmptruess")},
      {'v', QLatin1String("vcmplt_oqss")},
      {'v', QLatin1String("vcmple_oqss")},
      {'v', QLatin1String("vcmpunord_sss")},
      {'v', QLatin1String("vcmpneq_usss")},
      {'v', QLatin1String("vcmpnlt_uqss")},
      {'v', QLatin1String("vcmpnle_uqss")},
      {'v', QLatin1String("vcmpord_sss")},
      {'v', QLatin1String("vcmpeq_usss")},
      {'v', QLatin1String("vcmpnge_uqss")},
      {'v', QLatin1String("vcmpngt_uqss")},
      {'v', QLatin1String("vcmpfalse_osss")},
      {'v', QLatin1String("vcmpneq_osss")},
      {'v', QLatin1String("vcmpge_oqss")},
      {'v', QLatin1String("vcmpgt_oqss")},
      {'v', QLatin1String("vcmptrue_usss")},
      {'v', QLatin1String("vcmpss")},
      {'v', QLatin1String("vcomisd")},
      {'v', QLatin1String("vcomiss")},
      {'v', QLatin1String("vcvtdq2pd")},
      {'v', QLatin1String("vcvtdq2ps")},
      {'v', QLatin1String("vcvtpd2dq")},
      {'v', QLatin1String("vcvtpd2ps")},
      {'v', QLatin1String("vcvtps2dq")},
      {'v', QLatin1String("vcvtps2pd")},
      {'v', QLatin1String("vcvtsd2si")},
      {'v', QLatin1String("vcvtsd2ss")},
      {'v', QLatin1String("vcvtsi2sd")},
      {'v', QLatin1String("vcvtsi2ss")},
      {'v', QLatin1String("vcvtss2sd")},
      {'v', QLatin1String("vcvtss2si")},
      {'v', QLatin1String("vcvttpd2dq")},
      {'v', QLatin1String("vcvttps2dq")},
      {'v', QLatin1String("vcvttsd2si")},
      {'v', QLatin1String("vcvttss2si")},
      {'v', QLatin1String("vdivpd")},
      {'v', QLatin1String("vdivps")},
      {'v', QLatin1String("vdivsd")},
      {'v', QLatin1String("vdivss")},
      {'v', QLatin1String("vdppd")},
      {'v', QLatin1String("vdpps")},
      {'v', QLatin1String("vextractf128")},
      {'v', QLatin1String("vextractps")},
      {'v', QLatin1String("vhaddpd")},
      {'v', QLatin1String("vhaddps")},
      {'v', QLatin1String("vhsubpd")},
      {'v', QLatin1String("vhsubps")},
      {'v', QLatin1String("vinsertf128")},
      {'v', QLatin1String("vinsertps")},
      {'v', QLatin1String("vlddqu")},
      {'v', QLatin1String("vldqqu")},
      {'v', QLatin1String("vldmxcsr")},
      {'v', QLatin1String("vmaskmovdqu")},
      {'v', QLatin1String("vmaskmovps")},
      {'v', QLatin1String("vmaskmovpd")},
      {'v', QLatin1String("vmaxpd")},
      {'v', QLatin1String("vmaxps")},
      {'v', QLatin1String("vmaxsd")},
      {'v', QLatin1String("vmaxss")},
      {'v', QLatin1String("vminpd")},
      {'v', QLatin1String("vminps")},
      {'v', QLatin1String("vminsd")},
      {'v', QLatin1String("vminss")},
      {'v', QLatin1String("vmovapd")},
      {'v', QLatin1String("vmovaps")},
      {'v', QLatin1String("vmovd")},
      {'v', QLatin1String("vmovq")},
      {'v', QLatin1String("vmovddup")},
      {'v', QLatin1String("vmovdqa")},
      {'v', QLatin1String("vmovqqa")},
      {'v', QLatin1String("vmovdqu")},
      {'v', QLatin1String("vmovqqu")},
      {'v', QLatin1String("vmovhlps")},
      {'v', QLatin1String("vmovhpd")},
      {'v', QLatin1String("vmovhps")},
      {'v', QLatin1String("vmovlhps")},
      {'v', QLatin1String("vmovlpd")},
      {'v', QLatin1String("vmovlps")},
      {'v', QLatin1String("vmovmskpd")},
      {'v', QLatin1String("vmovmskps")},
      {'v', QLatin1String("vmovntdq")},
      {'v', QLatin1String("vmovntqq")},
      {'v', QLatin1String("vmovntdqa")},
      {'v', QLatin1String("vmovntpd")},
      {'v', QLatin1String("vmovntps")},
      {'v', QLatin1String("vmovsd")},
      {'v', QLatin1String("vmovshdup")},
      {'v', QLatin1String("vmovsldup")},
      {'v', QLatin1String("vmovss")},
      {'v', QLatin1String("vmovupd")},
      {'v', QLatin1String("vmovups")},
      {'v', QLatin1String("vmpsadbw")},
      {'v', QLatin1String("vmulpd")},
      {'v', QLatin1String("vmulps")},
      {'v', QLatin1String("vmulsd")},
      {'v', QLatin1String("vmulss")},
      {'v', QLatin1String("vorpd")},
      {'v', QLatin1String("vorps")},
      {'v', QLatin1String("vpabsb")},
      {'v', QLatin1String("vpabsw")},
      {'v', QLatin1String("vpabsd")},
      {'v', QLatin1String("vpacksswb")},
      {'v', QLatin1String("vpackssdw")},
      {'v', QLatin1String("vpackuswb")},
      {'v', QLatin1String("vpackusdw")},
      {'v', QLatin1String("vpaddb")},
      {'v', QLatin1String("vpaddw")},
      {'v', QLatin1String("vpaddd")},
      {'v', QLatin1String("vpaddq")},
      {'v', QLatin1String("vpaddsb")},
      {'v', QLatin1String("vpaddsw")},
      {'v', QLatin1String("vpaddusb")},
      {'v', QLatin1String("vpaddusw")},
      {'v', QLatin1String("vpalignr")},
      {'v', QLatin1String("vpand")},
      {'v', QLatin1String("vpandn")},
      {'v', QLatin1String("vpavgb")},
      {'v', QLatin1String("vpavgw")},
      {'v', QLatin1String("vpblendvb")},
      {'v', QLatin1String("vpblendw")},
      {'v', QLatin1String("vpcmpestri")},
      {'v', QLatin1String("vpcmpestrm")},
      {'v', QLatin1String("vpcmpistri")},
      {'v', QLatin1String("vpcmpistrm")},
      {'v', QLatin1String("vpcmpeqb")},
      {'v', QLatin1String("vpcmpeqw")},
      {'v', QLatin1String("vpcmpeqd")},
      {'v', QLatin1String("vpcmpeqq")},
      {'v', QLatin1String("vpcmpgtb")},
      {'v', QLatin1String("vpcmpgtw")},
      {'v', QLatin1String("vpcmpgtd")},
      {'v', QLatin1String("vpcmpgtq")},
      {'v', QLatin1String("vpermilpd")},
      {'v', QLatin1String("vpermilps")},
      {'v', QLatin1String("vperm2f128")},
      {'v', QLatin1String("vpextrb")},
      {'v', QLatin1String("vpextrw")},
      {'v', QLatin1String("vpextrd")},
      {'v', QLatin1String("vpextrq")},
      {'v', QLatin1String("vphaddw")},
      {'v', QLatin1String("vphaddd")},
      {'v', QLatin1String("vphaddsw")},
      {'v', QLatin1String("vphminposuw")},
      {'v', QLatin1String("vphsubw")},
      {'v', QLatin1String("vphsubd")},
      {'v', QLatin1String("vphsubsw")},
      {'v', QLatin1String("vpinsrb")},
      {'v', QLatin1String("vpinsrw")},
      {'v', QLatin1String("vpinsrd")},
      {'v', QLatin1String("vpinsrq")},
      {'v', QLatin1String("vpmaddwd")},
      {'v', QLatin1String("vpmaddubsw")},
      {'v', QLatin1String("vpmaxsb")},
      {'v', QLatin1String("vpmaxsw")},
      {'v', QLatin1String("vpmaxsd")},
      {'v', QLatin1String("vpmaxub")},
      {'v', QLatin1String("vpmaxuw")},
      {'v', QLatin1String("vpmaxud")},
      {'v', QLatin1String("vpminsb")},
      {'v', QLatin1String("vpminsw")},
      {'v', QLatin1String("vpminsd")},
      {'v', QLatin1String("vpminub")},
      {'v', QLatin1String("vpminuw")},
      {'v', QLatin1String("vpminud")},
      {'v', QLatin1String("vpmovmskb")},
      {'v', QLatin1String("vpmovsxbw")},
      {'v', QLatin1String("vpmovsxbd")},
      {'v', QLatin1String("vpmovsxbq")},
      {'v', QLatin1String("vpmovsxwd")},
      {'v', QLatin1String("vpmovsxwq")},
      {'v', QLatin1String("vpmovsxdq")},
      {'v', QLatin1String("vpmovzxbw")},
      {'v', QLatin1String("vpmovzxbd")},
      {'v', QLatin1String("vpmovzxbq")},
      {'v', QLatin1String("vpmovzxwd")},
      {'v', QLatin1String("vpmovzxwq")},
      {'v', QLatin1String("vpmovzxdq")},
      {'v', QLatin1String("vpmulhuw")},
      {'v', QLatin1String("vpmulhrsw")},
      {'v', QLatin1String("vpmulhw")},
      {'v', QLatin1String("vpmullw")},
      {'v', QLatin1String("vpmulld")},
      {'v', QLatin1String("vpmuludq")},
      {'v', QLatin1String("vpmuldq")},
      {'v', QLatin1String("vpor")},
      {'v', QLatin1String("vpsadbw")},
      {'v', QLatin1String("vpshufb")},
      {'v', QLatin1String("vpshufd")},
      {'v', QLatin1String("vpshufhw")},
      {'v', QLatin1String("vpshuflw")},
      {'v', QLatin1String("vpsignb")},
      {'v', QLatin1String("vpsignw")},
      {'v', QLatin1String("vpsignd")},
      {'v', QLatin1String("vpslldq")},
      {'v', QLatin1String("vpsrldq")},
      {'v', QLatin1String("vpsllw")},
      {'v', QLatin1String("vpslld")},
      {'v', QLatin1String("vpsllq")},
      {'v', QLatin1String("vpsraw")},
      {'v', QLatin1String("vpsrad")},
      {'v', QLatin1String("vpsrlw")},
      {'v', QLatin1String("vpsrld")},
      {'v', QLatin1String("vpsrlq")},
      {'v', QLatin1String("vptest")},
      {'v', QLatin1String("vpsubb")},
      {'v', QLatin1String("vpsubw")},
      {'v', QLatin1String("vpsubd")},
      {'v', QLatin1String("vpsubq")},
      {'v', QLatin1String("vpsubsb")},
      {'v', QLatin1String("vpsubsw")},
      {'v', QLatin1String("vpsubusb")},
      {'v', QLatin1String("vpsubusw")},
      {'v', QLatin1String("vpunpckhbw")},
      {'v', QLatin1String("vpunpckhwd")},
      {'v', QLatin1String("vpunpckhdq")},
      {'v', QLatin1String("vpunpckhqdq")},
      {'v', QLatin1String("vpunpcklbw")},
      {'v', QLatin1String("vpunpcklwd")},
      {'v', QLatin1String("vpunpckldq")},
      {'v', QLatin1String("vpunpcklqdq")},
      {'v', QLatin1String("vpxor")},
      {'v', QLatin1String("vrcpps")},
      {'v', QLatin1String("vrcpss")},
      {'v', QLatin1String("vrsqrtps")},
      {'v', QLatin1String("vrsqrtss")},
      {'v', QLatin1String("vroundpd")},
      {'v', QLatin1String("vroundps")},
      {'v', QLatin1String("vroundsd")},
      {'v', QLatin1String("vroundss")},
      {'v', QLatin1String("vshufpd")},
      {'v', QLatin1String("vshufps")},
      {'v', QLatin1String("vsqrtpd")},
      {'v', QLatin1String("vsqrtps")},
      {'v', QLatin1String("vsqrtsd")},
      {'v', QLatin1String("vsqrtss")},
      {'v', QLatin1String("vstmxcsr")},
      {'v', QLatin1String("vsubpd")},
      {'v', QLatin1String("vsubps")},
      {'v', QLatin1String("vsubsd")},
      {'v', QLatin1String("vsubss")},
      {'v', QLatin1String("vtestps")},
      {'v', QLatin1String("vtestpd")},
      {'v', QLatin1String("vucomisd")},
      {'v', QLatin1String("vucomiss")},
      {'v', QLatin1String("vunpckhpd")},
      {'v', QLatin1String("vunpckhps")},
      {'v', QLatin1String("vunpcklpd")},
      {'v', QLatin1String("vunpcklps")},
      {'v', QLatin1String("vxorpd")},
      {'v', QLatin1String("vxorps")},
      {'v', QLatin1String("vzeroall")},
      {'v', QLatin1String("vzeroupper")},
      {'p', QLatin1String("pclmullqlqdq")},
      {'p', QLatin1String("pclmulhqlqdq")},
      {'p', QLatin1String("pclmullqhqdq")},
      {'p', QLatin1String("pclmulhqhqdq")},
      {'p', QLatin1String("pclmulqdq")},
      {'v', QLatin1String("vpclmullqlqdq")},
      {'v', QLatin1String("vpclmulhqlqdq")},
      {'v', QLatin1String("vpclmullqhqdq")},
      {'v', QLatin1String("vpclmulhqhqdq")},
      {'v', QLatin1String("vpclmulqdq")},
      {'v', QLatin1String("vfmadd132ps")},
      {'v', QLatin1String("vfmadd132pd")},
      {'v', QLatin1String("vfmadd312ps")},
      {'v', QLatin1String("vfmadd312pd")},
      {'v', QLatin1String("vfmadd213ps")},
      {'v', QLatin1String("vfmadd213pd")},
      {'v', QLatin1String("vfmadd123ps")},
      {'v', QLatin1String("vfmadd123pd")},
      {'v', QLatin1String("vfmadd231ps")},
      {'v', QLatin1String("vfmadd231pd")},
      {'v', QLatin1String("vfmadd321ps")},
      {'v', QLatin1String("vfmadd321pd")},
      {'v', QLatin1String("vfmaddsub132ps")},
      {'v', QLatin1String("vfmaddsub132pd")},
      {'v', QLatin1String("vfmaddsub312ps")},
      {'v', QLatin1String("vfmaddsub312pd")},
      {'v', QLatin1String("vfmaddsub213ps")},
      {'v', QLatin1String("vfmaddsub213pd")},
      {'v', QLatin1String("vfmaddsub123ps")},
      {'v', QLatin1String("vfmaddsub123pd")},
      {'v', QLatin1String("vfmaddsub231ps")},
      {'v', QLatin1String("vfmaddsub231pd")},
      {'v', QLatin1String("vfmaddsub321ps")},
      {'v', QLatin1String("vfmaddsub321pd")},
      {'v', QLatin1String("vfmsub132ps")},
      {'v', QLatin1String("vfmsub132pd")},
      {'v', QLatin1String("vfmsub312ps")},
      {'v', QLatin1String("vfmsub312pd")},
      {'v', QLatin1String("vfmsub213ps")},
      {'v', QLatin1String("vfmsub213pd")},
      {'v', QLatin1String("vfmsub123ps")},
      {'v', QLatin1String("vfmsub123pd")},
      {'v', QLatin1String("vfmsub231ps")},
      {'v', QLatin1String("vfmsub231pd")},
      {'v', QLatin1String("vfmsub321ps")},
      {'v', QLatin1String("vfmsub321pd")},
      {'v', QLatin1String("vfmsubadd132ps")},
      {'v', QLatin1String("vfmsubadd132pd")},
      {'v', QLatin1String("vfmsubadd312ps")},
      {'v', QLatin1String("vfmsubadd312pd")},
      {'v', QLatin1String("vfmsubadd213ps")},
      {'v', QLatin1String("vfmsubadd213pd")},
      {'v', QLatin1String("vfmsubadd123ps")},
      {'v', QLatin1String("vfmsubadd123pd")},
      {'v', QLatin1String("vfmsubadd231ps")},
      {'v', QLatin1String("vfmsubadd231pd")},
      {'v', QLatin1String("vfmsubadd321ps")},
      {'v', QLatin1String("vfmsubadd321pd")},
      {'v', QLatin1String("vfnmadd132ps")},
      {'v', QLatin1String("vfnmadd132pd")},
      {'v', QLatin1String("vfnmadd312ps")},
      {'v', QLatin1String("vfnmadd312pd")},
      {'v', QLatin1String("vfnmadd213ps")},
      {'v', QLatin1String("vfnmadd213pd")},
      {'v', QLatin1String("vfnmadd123ps")},
      {'v', QLatin1String("vfnmadd123pd")},
      {'v', QLatin1String("vfnmadd231ps")},
      {'v', QLatin1String("vfnmadd231pd")},
      {'v', QLatin1String("vfnmadd321ps")},
      {'v', QLatin1String("vfnmadd321pd")},
      {'v', QLatin1String("vfnmsub132ps")},
      {'v', QLatin1String("vfnmsub132pd")},
      {'v', QLatin1String("vfnmsub312ps")},
      {'v', QLatin1String("vfnmsub312pd")},
      {'v', QLatin1String("vfnmsub213ps")},
      {'v', QLatin1String("vfnmsub213pd")},
      {'v', QLatin1String("vfnmsub123ps")},
      {'v', QLatin1String("vfnmsub123pd")},
      {'v', QLatin1String("vfnmsub231ps")},
      {'v', QLatin1String("vfnmsub231pd")},
      {'v', QLatin1String("vfnmsub321ps")},
      {'v', QLatin1String("vfnmsub321pd")},
      {'v', QLatin1String("vfmadd132ss")},
      {'v', QLatin1String("vfmadd132sd")},
      {'v', QLatin1String("vfmadd312ss")},
      {'v', QLatin1String("vfmadd312sd")},
      {'v', QLatin1String("vfmadd213ss")},
      {'v', QLatin1String("vfmadd213sd")},
      {'v', QLatin1String("vfmadd123ss")},
      {'v', QLatin1String("vfmadd123sd")},
      {'v', QLatin1String("vfmadd231ss")},
      {'v', QLatin1String("vfmadd231sd")},
      {'v', QLatin1String("vfmadd321ss")},
      {'v', QLatin1String("vfmadd321sd")},
      {'v', QLatin1String("vfmsub132ss")},
      {'v', QLatin1String("vfmsub132sd")},
      {'v', QLatin1String("vfmsub312ss")},
      {'v', QLatin1String("vfmsub312sd")},
      {'v', QLatin1String("vfmsub213ss")},
      {'v', QLatin1String("vfmsub213sd")},
      {'v', QLatin1String("vfmsub123ss")},
      {'v', QLatin1String("vfmsub123sd")},
      {'v', QLatin1String("vfmsub231ss")},
      {'v', QLatin1String("vfmsub231sd")},
      {'v', QLatin1String("vfmsub321ss")},
      {'v', QLatin1String("vfmsub321sd")},
      {'v', QLatin1String("vfnmadd132ss")},
      {'v', QLatin1String("vfnmadd132sd")},
      {'v', QLatin1String("vfnmadd312ss")},
      {'v', QLatin1String("vfnmadd312sd")},
      {'v', QLatin1String("vfnmadd213ss")},
      {'v', QLatin1String("vfnmadd213sd")},
      {'v', QLatin1String("vfnmadd123ss")},
      {'v', QLatin1String("vfnmadd123sd")},
      {'v', QLatin1String("vfnmadd231ss")},
      {'v', QLatin1String("vfnmadd231sd")},
      {'v', QLatin1String("vfnmadd321ss")},
      {'v', QLatin1String("vfnmadd321sd")},
      {'v', QLatin1String("vfnmsub132ss")},
      {'v', QLatin1String("vfnmsub132sd")},
      {'v', QLatin1String("vfnmsub312ss")},
      {'v', QLatin1String("vfnmsub312sd")},
      {'v', QLatin1String("vfnmsub213ss")},
      {'v', QLatin1String("vfnmsub213sd")},
      {'v', QLatin1String("vfnmsub123ss")},
      {'v', QLatin1String("vfnmsub123sd")},
      {'v', QLatin1String("vfnmsub231ss")},
      {'v', QLatin1String("vfnmsub231sd")},
      {'v', QLatin1String("vfnmsub321ss")},
      {'v', QLatin1String("vfnmsub321sd")},
      {'r', QLatin1String("rdfsbase")},
      {'r', QLatin1String("rdgsbase")},
      {'r', QLatin1String("rdrand")},
      {'w', QLatin1String("wrfsbase")},
      {'w', QLatin1String("wrgsbase")},
      {'v', QLatin1String("vcvtph2ps")},
      {'v', QLatin1String("vcvtps2ph")},
      {'a', QLatin1String("adcx")},
      {'a', QLatin1String("adox")},
      {'r', QLatin1String("rdseed")},
      {'c', QLatin1String("clac")},
      {'s', QLatin1String("stac")},
      {'x', QLatin1String("xstore")},
      {'x', QLatin1String("xcryptecb")},
      {'x', QLatin1String("xcryptcbc")},
      {'x', QLatin1String("xcryptctr")},
      {'x', QLatin1String("xcryptcfb")},
      {'x', QLatin1String("xcryptofb")},
      {'m', QLatin1String("montmul")},
      {'x', QLatin1String("xsha1")},
      {'x', QLatin1String("xsha256")},
      {'l', QLatin1String("llwpcb")},
      {'s', QLatin1String("slwpcb")},
      {'l', QLatin1String("lwpval")},
      {'l', QLatin1String("lwpins")},
      {'v', QLatin1String("vfmaddpd")},
      {'v', QLatin1String("vfmaddps")},
      {'v', QLatin1String("vfmaddsd")},
      {'v', QLatin1String("vfmaddss")},
      {'v', QLatin1String("vfmaddsubpd")},
      {'v', QLatin1String("vfmaddsubps")},
      {'v', QLatin1String("vfmsubaddpd")},
      {'v', QLatin1String("vfmsubaddps")},
      {'v', QLatin1String("vfmsubpd")},
      {'v', QLatin1String("vfmsubps")},
      {'v', QLatin1String("vfmsubsd")},
      {'v', QLatin1String("vfmsubss")},
      {'v', QLatin1String("vfnmaddpd")},
      {'v', QLatin1String("vfnmaddps")},
      {'v', QLatin1String("vfnmaddsd")},
      {'v', QLatin1String("vfnmaddss")},
      {'v', QLatin1String("vfnmsubpd")},
      {'v', QLatin1String("vfnmsubps")},
      {'v', QLatin1String("vfnmsubsd")},
      {'v', QLatin1String("vfnmsubss")},
      {'v', QLatin1String("vfrczpd")},
      {'v', QLatin1String("vfrczps")},
      {'v', QLatin1String("vfrczsd")},
      {'v', QLatin1String("vfrczss")},
      {'v', QLatin1String("vpcmov")},
      {'v', QLatin1String("vpcomb")},
      {'v', QLatin1String("vpcomd")},
      {'v', QLatin1String("vpcomq")},
      {'v', QLatin1String("vpcomub")},
      {'v', QLatin1String("vpcomud")},
      {'v', QLatin1String("vpcomuq")},
      {'v', QLatin1String("vpcomuw")},
      {'v', QLatin1String("vpcomw")},
      {'v', QLatin1String("vphaddbd")},
      {'v', QLatin1String("vphaddbq")},
      {'v', QLatin1String("vphaddbw")},
      {'v', QLatin1String("vphadddq")},
      {'v', QLatin1String("vphaddubd")},
      {'v', QLatin1String("vphaddubq")},
      {'v', QLatin1String("vphaddubw")},
      {'v', QLatin1String("vphaddudq")},
      {'v', QLatin1String("vphadduwd")},
      {'v', QLatin1String("vphadduwq")},
      {'v', QLatin1String("vphaddwd")},
      {'v', QLatin1String("vphaddwq")},
      {'v', QLatin1String("vphsubbw")},
      {'v', QLatin1String("vphsubdq")},
      {'v', QLatin1String("vphsubwd")},
      {'v', QLatin1String("vpmacsdd")},
      {'v', QLatin1String("vpmacsdqh")},
      {'v', QLatin1String("vpmacsdql")},
      {'v', QLatin1String("vpmacssdd")},
      {'v', QLatin1String("vpmacssdqh")},
      {'v', QLatin1String("vpmacssdql")},
      {'v', QLatin1String("vpmacsswd")},
      {'v', QLatin1String("vpmacssww")},
      {'v', QLatin1String("vpmacswd")},
      {'v', QLatin1String("vpmacsww")},
      {'v', QLatin1String("vpmadcsswd")},
      {'v', QLatin1String("vpmadcswd")},
      {'v', QLatin1String("vpperm")},
      {'v', QLatin1String("vprotb")},
      {'v', QLatin1String("vprotd")},
      {'v', QLatin1String("vprotq")},
      {'v', QLatin1String("vprotw")},
      {'v', QLatin1String("vpshab")},
      {'v', QLatin1String("vpshad")},
      {'v', QLatin1String("vpshaq")},
      {'v', QLatin1String("vpshaw")},
      {'v', QLatin1String("vpshlb")},
      {'v', QLatin1String("vpshld")},
      {'v', QLatin1String("vpshlq")},
      {'v', QLatin1String("vpshlw")},
      {'v', QLatin1String("vbroadcasti128")},
      {'v', QLatin1String("vpblendd")},
      {'v', QLatin1String("vpbroadcastb")},
      {'v', QLatin1String("vpbroadcastw")},
      {'v', QLatin1String("vpbroadcastd")},
      {'v', QLatin1String("vpbroadcastq")},
      {'v', QLatin1String("vpermd")},
      {'v', QLatin1String("vpermpd")},
      {'v', QLatin1String("vpermps")},
      {'v', QLatin1String("vpermq")},
      {'v', QLatin1String("vperm2i128")},
      {'v', QLatin1String("vextracti128")},
      {'v', QLatin1String("vinserti128")},
      {'v', QLatin1String("vpmaskmovd")},
      {'v', QLatin1String("vpmaskmovq")},
      {'v', QLatin1String("vpsllvd")},
      {'v', QLatin1String("vpsllvq")},
      {'v', QLatin1String("vpsravd")},
      {'v', QLatin1String("vpsrlvd")},
      {'v', QLatin1String("vpsrlvq")},
      {'v', QLatin1String("vgatherdpd")},
      {'v', QLatin1String("vgatherqpd")},
      {'v', QLatin1String("vgatherdps")},
      {'v', QLatin1String("vgatherqps")},
      {'v', QLatin1String("vpgatherdd")},
      {'v', QLatin1String("vpgatherqd")},
      {'v', QLatin1String("vpgatherdq")},
      {'v', QLatin1String("vpgatherqq")},
      {'x', QLatin1String("xabort")},
      {'x', QLatin1String("xbegin")},
      {'x', QLatin1String("xend")},
      {'x', QLatin1String("xtest")},
      {'a', QLatin1String("andn")},
      {'b', QLatin1String("bextr")},
      {'b', QLatin1String("blci")},
      {'b', QLatin1String("blcic")},
      {'b', QLatin1String("blsi")},
      {'b', QLatin1String("blsic")},
      {'b', QLatin1String("blcfill")},
      {'b', QLatin1String("blsfill")},
      {'b', QLatin1String("blcmsk")},
      {'b', QLatin1String("blsmsk")},
      {'b', QLatin1String("blsr")},
      {'b', QLatin1String("blcs")},
      {'b', QLatin1String("bzhi")},
      {'m', QLatin1String("mulx")},
      {'p', QLatin1String("pdep")},
      {'p', QLatin1String("pext")},
      {'r', QLatin1String("rorx")},
      {'s', QLatin1String("sarx")},
      {'s', QLatin1String("shlx")},
      {'s', QLatin1String("shrx")},
      {'t', QLatin1String("tzcnt")},
      {'t', QLatin1String("tzmsk")},
      {'t', QLatin1String("t1mskc")},
      {'v', QLatin1String("valignd")},
      {'v', QLatin1String("valignq")},
      {'v', QLatin1String("vblendmpd")},
      {'v', QLatin1String("vblendmps")},
      {'v', QLatin1String("vbroadcastf32x4")},
      {'v', QLatin1String("vbroadcastf64x4")},
      {'v', QLatin1String("vbroadcasti32x4")},
      {'v', QLatin1String("vbroadcasti64x4")},
      {'v', QLatin1String("vcompresspd")},
      {'v', QLatin1String("vcompressps")},
      {'v', QLatin1String("vcvtpd2udq")},
      {'v', QLatin1String("vcvtps2udq")},
      {'v', QLatin1String("vcvtsd2usi")},
      {'v', QLatin1String("vcvtss2usi")},
      {'v', QLatin1String("vcvttpd2udq")},
      {'v', QLatin1String("vcvttps2udq")},
      {'v', QLatin1String("vcvttsd2usi")},
      {'v', QLatin1String("vcvttss2usi")},
      {'v', QLatin1String("vcvtudq2pd")},
      {'v', QLatin1String("vcvtudq2ps")},
      {'v', QLatin1String("vcvtusi2sd")},
      {'v', QLatin1String("vcvtusi2ss")},
      {'v', QLatin1String("vexpandpd")},
      {'v', QLatin1String("vexpandps")},
      {'v', QLatin1String("vextractf32x4")},
      {'v', QLatin1String("vextractf64x4")},
      {'v', QLatin1String("vextracti32x4")},
      {'v', QLatin1String("vextracti64x4")},
      {'v', QLatin1String("vfixupimmpd")},
      {'v', QLatin1String("vfixupimmps")},
      {'v', QLatin1String("vfixupimmsd")},
      {'v', QLatin1String("vfixupimmss")},
      {'v', QLatin1String("vgetexppd")},
      {'v', QLatin1String("vgetexpps")},
      {'v', QLatin1String("vgetexpsd")},
      {'v', QLatin1String("vgetexpss")},
      {'v', QLatin1String("vgetmantpd")},
      {'v', QLatin1String("vgetmantps")},
      {'v', QLatin1String("vgetmantsd")},
      {'v', QLatin1String("vgetmantss")},
      {'v', QLatin1String("vinsertf32x4")},
      {'v', QLatin1String("vinsertf64x4")},
      {'v', QLatin1String("vinserti32x4")},
      {'v', QLatin1String("vinserti64x4")},
      {'v', QLatin1String("vmovdqa32")},
      {'v', QLatin1String("vmovdqa64")},
      {'v', QLatin1String("vmovdqu32")},
      {'v', QLatin1String("vmovdqu64")},
      {'v', QLatin1String("vpabsq")},
      {'v', QLatin1String("vpandd")},
      {'v', QLatin1String("vpandnd")},
      {'v', QLatin1String("vpandnq")},
      {'v', QLatin1String("vpandq")},
      {'v', QLatin1String("vpblendmd")},
      {'v', QLatin1String("vpblendmq")},
      {'v', QLatin1String("vpcmpltd")},
      {'v', QLatin1String("vpcmpled")},
      {'v', QLatin1String("vpcmpneqd")},
      {'v', QLatin1String("vpcmpnltd")},
      {'v', QLatin1String("vpcmpnled")},
      {'v', QLatin1String("vpcmpd")},
      {'v', QLatin1String("vpcmpltq")},
      {'v', QLatin1String("vpcmpleq")},
      {'v', QLatin1String("vpcmpneqq")},
      {'v', QLatin1String("vpcmpnltq")},
      {'v', QLatin1String("vpcmpnleq")},
      {'v', QLatin1String("vpcmpq")},
      {'v', QLatin1String("vpcmpequd")},
      {'v', QLatin1String("vpcmpltud")},
      {'v', QLatin1String("vpcmpleud")},
      {'v', QLatin1String("vpcmpnequd")},
      {'v', QLatin1String("vpcmpnltud")},
      {'v', QLatin1String("vpcmpnleud")},
      {'v', QLatin1String("vpcmpud")},
      {'v', QLatin1String("vpcmpequq")},
      {'v', QLatin1String("vpcmpltuq")},
      {'v', QLatin1String("vpcmpleuq")},
      {'v', QLatin1String("vpcmpnequq")},
      {'v', QLatin1String("vpcmpnltuq")},
      {'v', QLatin1String("vpcmpnleuq")},
      {'v', QLatin1String("vpcmpuq")},
      {'v', QLatin1String("vpcompressd")},
      {'v', QLatin1String("vpcompressq")},
      {'v', QLatin1String("vpermi2d")},
      {'v', QLatin1String("vpermi2pd")},
      {'v', QLatin1String("vpermi2ps")},
      {'v', QLatin1String("vpermi2q")},
      {'v', QLatin1String("vpermt2d")},
      {'v', QLatin1String("vpermt2pd")},
      {'v', QLatin1String("vpermt2ps")},
      {'v', QLatin1String("vpermt2q")},
      {'v', QLatin1String("vpexpandd")},
      {'v', QLatin1String("vpexpandq")},
      {'v', QLatin1String("vpmaxsq")},
      {'v', QLatin1String("vpmaxuq")},
      {'v', QLatin1String("vpminsq")},
      {'v', QLatin1String("vpminuq")},
      {'v', QLatin1String("vpmovdb")},
      {'v', QLatin1String("vpmovdw")},
      {'v', QLatin1String("vpmovqb")},
      {'v', QLatin1String("vpmovqd")},
      {'v', QLatin1String("vpmovqw")},
      {'v', QLatin1String("vpmovsdb")},
      {'v', QLatin1String("vpmovsdw")},
      {'v', QLatin1String("vpmovsqb")},
      {'v', QLatin1String("vpmovsqd")},
      {'v', QLatin1String("vpmovsqw")},
      {'v', QLatin1String("vpmovusdb")},
      {'v', QLatin1String("vpmovusdw")},
      {'v', QLatin1String("vpmovusqb")},
      {'v', QLatin1String("vpmovusqd")},
      {'v', QLatin1String("vpmovusqw")},
      {'v', QLatin1String("vpord")},
      {'v', QLatin1String("vporq")},
      {'v', QLatin1String("vprold")},
      {'v', QLatin1String("vprolq")},
      {'v', QLatin1String("vprolvd")},
      {'v', QLatin1String("vprolvq")},
      {'v', QLatin1String("vprord")},
      {'v', QLatin1String("vprorq")},
      {'v', QLatin1String("vprorvd")},
      {'v', QLatin1String("vprorvq")},
      {'v', QLatin1String("vpscatterdd")},
      {'v', QLatin1String("vpscatterdq")},
      {'v', QLatin1String("vpscatterqd")},
      {'v', QLatin1String("vpscatterqq")},
      {'v', QLatin1String("vpsraq")},
      {'v', QLatin1String("vpsravq")},
      {'v', QLatin1String("vpternlogd")},
      {'v', QLatin1String("vpternlogq")},
      {'v', QLatin1String("vptestmd")},
      {'v', QLatin1String("vptestmq")},
      {'v', QLatin1String("vptestnmd")},
      {'v', QLatin1String("vptestnmq")},
      {'v', QLatin1String("vpxord")},
      {'v', QLatin1String("vpxorq")},
      {'v', QLatin1String("vrcp14pd")},
      {'v', QLatin1String("vrcp14ps")},
      {'v', QLatin1String("vrcp14sd")},
      {'v', QLatin1String("vrcp14ss")},
      {'v', QLatin1String("vrndscalepd")},
      {'v', QLatin1String("vrndscaleps")},
      {'v', QLatin1String("vrndscalesd")},
      {'v', QLatin1String("vrndscaless")},
      {'v', QLatin1String("vrsqrt14pd")},
      {'v', QLatin1String("vrsqrt14ps")},
      {'v', QLatin1String("vrsqrt14sd")},
      {'v', QLatin1String("vrsqrt14ss")},
      {'v', QLatin1String("vscalefpd")},
      {'v', QLatin1String("vscalefps")},
      {'v', QLatin1String("vscalefsd")},
      {'v', QLatin1String("vscalefss")},
      {'v', QLatin1String("vscatterdpd")},
      {'v', QLatin1String("vscatterdps")},
      {'v', QLatin1String("vscatterqpd")},
      {'v', QLatin1String("vscatterqps")},
      {'v', QLatin1String("vshuff32x4")},
      {'v', QLatin1String("vshuff64x2")},
      {'v', QLatin1String("vshufi32x4")},
      {'v', QLatin1String("vshufi64x2")},
      {'k', QLatin1String("kandnw")},
      {'k', QLatin1String("kandw")},
      {'k', QLatin1String("kmovw")},
      {'k', QLatin1String("knotw")},
      {'k', QLatin1String("kortestw")},
      {'k', QLatin1String("korw")},
      {'k', QLatin1String("kshiftlw")},
      {'k', QLatin1String("kshiftrw")},
      {'k', QLatin1String("kunpckbw")},
      {'k', QLatin1String("kxnorw")},
      {'k', QLatin1String("kxorw")},
      {'v', QLatin1String("vpbroadcastmb2q")},
      {'v', QLatin1String("vpbroadcastmw2d")},
      {'v', QLatin1String("vpconflictd")},
      {'v', QLatin1String("vpconflictq")},
      {'v', QLatin1String("vplzcntd")},
      {'v', QLatin1String("vplzcntq")},
      {'v', QLatin1String("vexp2pd")},
      {'v', QLatin1String("vexp2ps")},
      {'v', QLatin1String("vrcp28pd")},
      {'v', QLatin1String("vrcp28ps")},
      {'v', QLatin1String("vrcp28sd")},
      {'v', QLatin1String("vrcp28ss")},
      {'v', QLatin1String("vrsqrt28pd")},
      {'v', QLatin1String("vrsqrt28ps")},
      {'v', QLatin1String("vrsqrt28sd")},
      {'v', QLatin1String("vrsqrt28ss")},
      {'v', QLatin1String("vgatherpf0dpd")},
      {'v', QLatin1String("vgatherpf0dps")},
      {'v', QLatin1String("vgatherpf0qpd")},
      {'v', QLatin1String("vgatherpf0qps")},
      {'v', QLatin1String("vgatherpf1dpd")},
      {'v', QLatin1String("vgatherpf1dps")},
      {'v', QLatin1String("vgatherpf1qpd")},
      {'v', QLatin1String("vgatherpf1qps")},
      {'v', QLatin1String("vscatterpf0dpd")},
      {'v', QLatin1String("vscatterpf0dps")},
      {'v', QLatin1String("vscatterpf0qpd")},
      {'v', QLatin1String("vscatterpf0qps")},
      {'v', QLatin1String("vscatterpf1dpd")},
      {'v', QLatin1String("vscatterpf1dps")},
      {'v', QLatin1String("vscatterpf1qpd")},
      {'v', QLatin1String("vscatterpf1qps")},
      {'p', QLatin1String("prefetchwt1")},
      {'b', QLatin1String("bndmk")},
      {'b', QLatin1String("bndcl")},
      {'b', QLatin1String("bndcu")},
      {'b', QLatin1String("bndcn")},
      {'b', QLatin1String("bndmov")},
      {'b', QLatin1String("bndldx")},
      {'b', QLatin1String("bndstx")},
      {'s', QLatin1String("sha1rnds4")},
      {'s', QLatin1String("sha1nexte")},
      {'s', QLatin1String("sha1msg1")},
      {'s', QLatin1String("sha1msg2")},
      {'s', QLatin1String("sha256rnds2")},
      {'s', QLatin1String("sha256msg1")},
      {'s', QLatin1String("sha256msg2")},
      {'h', QLatin1String("hint_nop")},
  };

  other = {
      {'s', QLatin1String("section")},
  };
  builtin = {

      {'t', QLatin1String("text")},
      {'c', QLatin1String("code")},
      {'d', QLatin1String("data")},
      {'b', QLatin1String("bss")}};
}

} // namespace QSourceHighlite
